Spaces:
Sleeping
Sleeping
| from app.schemas.project import Project, ProjectFile | |
| def test_project_model_roundtrips(): | |
| p = Project( | |
| project_id="abc", | |
| name="My Project", | |
| created_at=1.0, | |
| updated_at=2.0, | |
| files=[ProjectFile(filename="a.pdf", file_id="deadbeef")], | |
| ) | |
| dumped = p.model_dump() | |
| restored = Project(**dumped) | |
| assert restored.files[0].filename == "a.pdf" | |
| assert restored.intention == "learn" # default | |
| assert restored.title == "" # default | |
| from app.services.project_service import ProjectService | |
| def test_create_persists_and_loads(tmp_path): | |
| svc = ProjectService(root=str(tmp_path)) | |
| p = svc.create("Thesis") | |
| assert p.project_id | |
| assert p.name == "Thesis" | |
| loaded = svc.load(p.project_id) | |
| assert loaded is not None | |
| assert loaded.name == "Thesis" | |
| def test_load_missing_returns_none(tmp_path): | |
| svc = ProjectService(root=str(tmp_path)) | |
| assert svc.load("nope") is None | |
| def test_list_orders_by_updated_desc(tmp_path): | |
| svc = ProjectService(root=str(tmp_path)) | |
| a = svc.create("A") | |
| b = svc.create("B") | |
| b.updated_at = a.updated_at + 100 | |
| svc.save(b) | |
| ids = [p.project_id for p in svc.list()] | |
| assert ids[0] == b.project_id | |
| def test_derive_document_id_is_order_independent(tmp_path): | |
| from app.schemas.project import ProjectFile | |
| svc = ProjectService(root=str(tmp_path)) | |
| p1 = svc.create("P1") | |
| p1.files = [ProjectFile(filename="a", file_id="11"), ProjectFile(filename="b", file_id="22")] | |
| p2 = svc.create("P2") | |
| p2.files = [ProjectFile(filename="b", file_id="22"), ProjectFile(filename="a", file_id="11")] | |
| assert svc.derive_document_id(p1) == svc.derive_document_id(p2) | |
| def test_empty_project_has_no_document_id(tmp_path): | |
| svc = ProjectService(root=str(tmp_path)) | |
| p = svc.create("Empty") | |
| assert svc.derive_document_id(p) == "" | |
| def test_delete_removes_file(tmp_path): | |
| svc = ProjectService(root=str(tmp_path)) | |
| p = svc.create("Gone") | |
| svc.delete(p.project_id) | |
| assert svc.load(p.project_id) is None | |