from __future__ import annotations def test_projection_worker_marks_ready_only_after_status_verification(): from app.core.knowledge.lightrag.projection import ProjectionJob, ProjectionWorker class Client: def insert(self, **_kwargs): return type("Receipt", (), {"track_id": "track-1"})() def track_status(self, _track_id): return "processed" class Repository: def __init__(self): self.states = [] def mark(self, projection_id, status, error=None): self.states.append((projection_id, status, error)) repository = Repository() worker = ProjectionWorker(client=Client(), repository=repository) result = worker.project( ProjectionJob( projection_id="projection-1", external_document_id="DataFlow:source-1:2", content="canonical content", metadata={"point_keys": ["DataFlow/source-1/purpose"]}, ) ) assert result == "ready" assert repository.states == [ ("projection-1", "processing", None), ("projection-1", "ready", None), ] def test_unverified_delete_is_never_reported_as_deleted(): from app.core.knowledge.lightrag.projection import ProjectionJob, ProjectionWorker class Client: def delete(self, _external_document_id): return type("Receipt", (), {"verified": False})() class Repository: def __init__(self): self.states = [] def mark(self, projection_id, status, error=None): self.states.append((projection_id, status, error)) repository = Repository() worker = ProjectionWorker(client=Client(), repository=repository) result = worker.delete( ProjectionJob( projection_id="projection-1", external_document_id="DataFlow:source-1:2", content="", metadata={}, ) ) assert result == "unverified" assert repository.states[-1][1] == "unverified"