fix: persist cleared knowledge collection timestamps

This commit is contained in:
2026-10-17 15:31:03 +08:00
parent fb51081750
commit aad79aea5f
8 changed files with 110 additions and 4 deletions
+46
View File
@@ -156,6 +156,52 @@ def test_review_edit_and_history(client):
assert events["items"][1]["snapshot"]["item"]["verification_status"] == "verified"
def test_clear_knowledge_collection_time_requires_new_evidence(client):
verified = review(client, knowledge(client)).json()
path = f"/api/knowledge/{verified['id']}"
before = client.get(path + "/history").json()["items"]
response = client.patch(
path, json={"expected_version": verified["version"], "collected_at": None}
)
assert response.status_code == 200
cleared = response.json()
assert cleared["collected_at"] is None
assert cleared["version"] == verified["version"] + 1
assert cleared["verification_status"] == "pending"
assert cleared["reviewer"] is None and cleared["reviewed_at"] is None
assert cleared["verification_notes"] is None
assert review(client, cleared).status_code == 422
assert client.get(path).json() == cleared
events = client.get(path + "/history").json()["items"]
assert events[0]["snapshot"]["item"]["collected_at"] is None
assert events[1:] == before
assert (
client.patch(
path, json={"expected_version": verified["version"], "collected_at": COLLECTED}
).status_code
== 409
)
restored = client.patch(
path, json={"expected_version": cleared["version"], "collected_at": COLLECTED}
).json()
assert review(client, restored).status_code == 200
def test_document_collection_time_cannot_be_cleared(client):
doc = document(client, source(client)["id"])
path = f"/api/documents/{doc['id']}"
before = client.get(path + "/history").json()
response = client.patch(path, json={"expected_version": doc["version"], "collected_at": None})
assert response.status_code == 422
assert client.get(path).json() == doc
assert client.get(path + "/history").json() == before
def test_source_document_changes_invalidate_evidence(client):
src = source(client)
doc = document(client, src["id"])