first commit

This commit is contained in:
strepsiades
2026-03-09 16:31:42 +08:00
commit 4a9c444b10
486 changed files with 52479 additions and 0 deletions
@@ -0,0 +1,49 @@
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"