Download tests/ci/unit/test_context_builder_case_id_inference.py from jun2024/fc: direct link, hf CLI and curl.
- Browser
- Download file 3.59 kB
-
https://huggingface.co/spaces/jun2024/fc/resolve/main/tests/ci/unit/test_context_builder_case_id_inference.py
- Command line
-
hf download hf://spaces/jun2024/fc/tests/ci/unit/test_context_builder_case_id_inference.py
-
curl -L -o test_context_builder_case_id_inference.py https://huggingface.co/spaces/jun2024/fc/resolve/main/tests/ci/unit/test_context_builder_case_id_inference.py
3.59 kB
| """Regression tests for case_id inference in placeholder context builder.""" | |
| from __future__ import annotations | |
| from dataclasses import dataclass | |
| from typing import Any | |
| from apps.documents.services.placeholders.context_builder import EnhancedContextBuilder | |
| from apps.documents.services.placeholders.fallback import PLACEHOLDER_FALLBACK_VALUE | |
| from apps.documents.services.placeholders.litigation.enforcement_judgment_service import ( | |
| EnforcementJudgmentMainTextService, | |
| ) | |
| from apps.litigation_ai.placeholders.spec import LitigationPlaceholderKeys | |
| class _CaseStub: | |
| id: int | |
| class _CaptureCaseIdService: | |
| name = "capture_case_id_service" | |
| category = "test" | |
| placeholder_keys = ["captured_case_id"] | |
| def generate(self, context_data: dict[str, Any]) -> dict[str, Any]: | |
| return {"captured_case_id": context_data.get("case_id")} | |
| class _RegistryStub: | |
| def __init__(self, services: list[Any]) -> None: | |
| self._services = services | |
| def get_all_services(self) -> list[Any]: | |
| return self._services | |
| def get_service_for_placeholder(self, placeholder_key: str) -> Any | None: | |
| for service in self._services: | |
| if placeholder_key in getattr(service, "placeholder_keys", []): | |
| return service | |
| return None | |
| class _PartialService: | |
| name = "partial_service" | |
| category = "test" | |
| placeholder_keys = ["a", "b"] | |
| def generate(self, context_data: dict[str, Any]) -> dict[str, Any]: | |
| return {"a": "value-a"} | |
| class _ErrorService: | |
| name = "error_service" | |
| category = "test" | |
| placeholder_keys = ["c"] | |
| def generate(self, context_data: dict[str, Any]) -> dict[str, Any]: | |
| raise RuntimeError("boom") | |
| def test_build_context_infers_case_id_from_case_object() -> None: | |
| builder = EnhancedContextBuilder(registry=_RegistryStub([_CaptureCaseIdService()])) | |
| context = builder.build_context({"case": _CaseStub(id=11)}) | |
| assert context["captured_case_id"] == 11 | |
| def test_build_context_keeps_explicit_case_id() -> None: | |
| builder = EnhancedContextBuilder(registry=_RegistryStub([_CaptureCaseIdService()])) | |
| context = builder.build_context({"case": _CaseStub(id=11), "case_id": 99}) | |
| assert context["captured_case_id"] == 99 | |
| def test_enforcement_judgment_service_infers_case_id_from_case_object() -> None: | |
| service = EnforcementJudgmentMainTextService() | |
| service.get_judgment_main_text = lambda case_id: f"main-{case_id}" # type: ignore[method-assign] | |
| result = service.generate({"case": _CaseStub(id=11)}) | |
| assert result[LitigationPlaceholderKeys.ENFORCEMENT_JUDGMENT_MAIN_TEXT] == "main-11" | |
| def test_build_context_fills_missing_service_keys_with_slash() -> None: | |
| builder = EnhancedContextBuilder(registry=_RegistryStub([_PartialService()])) | |
| context = builder.build_context({"case": _CaseStub(id=11)}) | |
| assert context["a"] == "value-a" | |
| assert context["b"] == PLACEHOLDER_FALLBACK_VALUE | |
| def test_build_context_fills_service_exception_keys_with_slash() -> None: | |
| builder = EnhancedContextBuilder(registry=_RegistryStub([_ErrorService()])) | |
| context = builder.build_context({"case": _CaseStub(id=11)}) | |
| assert context["c"] == PLACEHOLDER_FALLBACK_VALUE | |
| def test_build_context_fills_missing_required_placeholders_with_slash() -> None: | |
| builder = EnhancedContextBuilder(registry=_RegistryStub([])) | |
| context = builder.build_context({"case": _CaseStub(id=11)}, required_placeholders=["x", "y"]) | |
| assert context["x"] == PLACEHOLDER_FALLBACK_VALUE | |
| assert context["y"] == PLACEHOLDER_FALLBACK_VALUE | |