first commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
"""Dictionary payload contracts for diagnosis choice fields."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from doctor_workstation.services.mock_repository import DemoDoctorRepository
|
||||
from doctor_workstation.services.repository import RemoteDoctorRepository, _dictionary_rows
|
||||
from doctor_workstation.ui.dialogs.diagnosis import _CHOICE_DICTIONARIES, _dictionary_choices
|
||||
|
||||
|
||||
class RecordingClient:
|
||||
def __init__(self, payload: Any) -> None:
|
||||
self.payload = payload
|
||||
self.get_calls: list[tuple[str, dict[str, Any]]] = []
|
||||
|
||||
def get(self, endpoint: str, params: dict[str, Any] | None = None) -> Any:
|
||||
self.get_calls.append((endpoint, dict(params or {})))
|
||||
return self.payload
|
||||
|
||||
|
||||
def test_dictionary_rows_unwrap_admin_type_map() -> None:
|
||||
rows = _dictionary_rows(
|
||||
{
|
||||
"sleep_condition": [
|
||||
{"name": "入睡困难", "value": "入睡困难"},
|
||||
{"name": "多梦", "value": "多梦"},
|
||||
]
|
||||
},
|
||||
"sleep_condition",
|
||||
)
|
||||
assert [row["value"] for row in rows] == ["入睡困难", "多梦"]
|
||||
|
||||
|
||||
def test_remote_get_dictionary_uses_admin_dict_shape() -> None:
|
||||
client = RecordingClient(
|
||||
{
|
||||
"appetite": [
|
||||
{"name": "口干", "value": "口干"},
|
||||
{"name": "口苦", "value": "口苦"},
|
||||
]
|
||||
}
|
||||
)
|
||||
repository = RemoteDoctorRepository(client) # type: ignore[arg-type]
|
||||
rows = repository.get_dictionary("appetite")
|
||||
assert client.get_calls == [("config/dict", {"type": "appetite"})]
|
||||
assert _dictionary_choices(rows, "appetite") == [("口干", "口干"), ("口苦", "口苦")]
|
||||
|
||||
|
||||
def test_demo_exposes_all_diagnosis_choice_dictionaries() -> None:
|
||||
repository = DemoDoctorRepository()
|
||||
for dictionary_type, _multiple in _CHOICE_DICTIONARIES.values():
|
||||
rows = repository.get_dictionary(dictionary_type)
|
||||
assert rows, dictionary_type
|
||||
assert _dictionary_choices(rows, dictionary_type)
|
||||
Reference in New Issue
Block a user