同步用户相关修改

This commit is contained in:
strepsiades
2026-03-24 15:13:46 +08:00
parent 8ee0131d47
commit 67370657db
5 changed files with 171 additions and 85 deletions
@@ -91,4 +91,49 @@ async def test_resolve_and_validate_replaces_list_dependency_fields(monkeypatch)
assert error is None
assert resolved_data is not None
assert resolved_data["project_ids"] == ["local-project-1", "local-project-2"]
assert resolved_data["name"] == "demo"
@pytest.mark.asyncio
async def test_resolve_and_validate_skips_unresolved_list_dependency_items(monkeypatch):
remote_nodes = [
FakeNode(node_id="remote-project-node-1", node_type="project", data_id="remote-project-1", data={}),
]
local_nodes = [
FakeNode(node_id="local-project-node-1", node_type="project", data_id="local-project-1", data={}),
]
remote_collection = FakeCollection(remote_nodes)
local_collection = FakeCollection(local_nodes)
binding_manager = FakeBindingManager(
{
"remote-project-node-1": "local-project-node-1",
}
)
class TempNode:
def __init__(self, node_id: str, data_id: str, data: dict[str, object]):
self.node_id = node_id
self.data_id = data_id
self._data = data
def get_data(self):
return self._data
def set_data(self, data):
self._data = data
monkeypatch.setattr("sync_state_machine.common.registry.DomainRegistry.get_node_class", lambda node_type: TempNode)
resolver = IDResolver(local_collection, remote_collection, binding_manager)
resolved_data, error = await resolver.resolve_and_validate(
data={"project_ids": ["remote-project-1", "remote-project-2"], "name": "demo"},
node_type="user",
depend_fields={"project_ids": "project"},
to_remote=False,
)
assert error is None
assert resolved_data is not None
assert resolved_data["project_ids"] == ["local-project-1"]
assert resolved_data["name"] == "demo"