Spaces:
Sleeping
Sleeping
File size: 2,072 Bytes
2e818da | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 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
|