Files
ecm_sync_system/tests/unit/test_project_detail_api_handler.py
T
strepsiades 4a9c444b10 first commit
2026-03-09 16:31:42 +08:00

50 lines
1.4 KiB
Python

from __future__ import annotations
from pydantic import BaseModel
from sync_state_machine.common.collection import DataCollection
from sync_state_machine.common.sync_node import SyncNode
from sync_state_machine.domain.project_detail.api_handler import ProjectDetailApiHandler
class _ProjectSchema(BaseModel):
id: str
class _ProjectNode(SyncNode[_ProjectSchema]):
node_type = "project"
schema = _ProjectSchema
def test_project_detail_load_injects_project_id_before_validation() -> None:
collection = DataCollection("remote")
project = _ProjectNode(
node_id="project-node-1",
data_id="project-1",
data={"id": "project-1"},
context={
"all_info": {
"project_detail": [
{
"id": "detail-1",
"key": "plan_construction",
"value": [{"date": "2026-01-01", "capacity": 12.5}],
}
]
}
},
)
collection._nodes[project.node_id] = project
handler = ProjectDetailApiHandler()
handler.set_collection(collection)
nodes = __import__("asyncio").run(handler.load())
assert len(nodes) == 1
detail_data = nodes[0].get_data()
assert detail_data is not None
assert detail_data["project_id"] == "project-1"
assert detail_data["id"] == "detail-1"