test_lightrag_projection.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from __future__ import annotations
  2. def test_projection_worker_marks_ready_only_after_status_verification():
  3. from app.core.knowledge.lightrag.projection import ProjectionJob, ProjectionWorker
  4. class Client:
  5. def insert(self, **_kwargs):
  6. return type("Receipt", (), {"track_id": "track-1"})()
  7. def track_status(self, _track_id):
  8. return "processed"
  9. class Repository:
  10. def __init__(self):
  11. self.states = []
  12. def mark(self, projection_id, status, error=None):
  13. self.states.append((projection_id, status, error))
  14. repository = Repository()
  15. worker = ProjectionWorker(client=Client(), repository=repository)
  16. result = worker.project(
  17. ProjectionJob(
  18. projection_id="projection-1",
  19. external_document_id="DataFlow:source-1:2",
  20. content="canonical content",
  21. metadata={"point_keys": ["DataFlow/source-1/purpose"]},
  22. )
  23. )
  24. assert result == "ready"
  25. assert repository.states == [
  26. ("projection-1", "processing", None),
  27. ("projection-1", "ready", None),
  28. ]
  29. def test_unverified_delete_is_never_reported_as_deleted():
  30. from app.core.knowledge.lightrag.projection import ProjectionJob, ProjectionWorker
  31. class Client:
  32. def delete(self, _external_document_id):
  33. return type("Receipt", (), {"verified": False})()
  34. class Repository:
  35. def __init__(self):
  36. self.states = []
  37. def mark(self, projection_id, status, error=None):
  38. self.states.append((projection_id, status, error))
  39. repository = Repository()
  40. worker = ProjectionWorker(client=Client(), repository=repository)
  41. result = worker.delete(
  42. ProjectionJob(
  43. projection_id="projection-1",
  44. external_document_id="DataFlow:source-1:2",
  45. content="",
  46. metadata={},
  47. )
  48. )
  49. assert result == "unverified"
  50. assert repository.states[-1][1] == "unverified"