mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-08-13 22:33:19 +00:00
Add some tests for this new version doesnt follow id
This commit is contained in:
@@ -827,6 +827,67 @@ class TestDocumentVersioningApi(DirectoriesMixin, APITestCase):
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(resp.data["content"], "v1-content")
|
||||
|
||||
def _make_root_with_out_of_order_versions(self) -> tuple[Document, ...]:
|
||||
"""
|
||||
A root whose newest version has a *lower* id than an older one, which is
|
||||
what merging an existing document in as a version produces.
|
||||
"""
|
||||
root = Document.objects.create(
|
||||
title="root",
|
||||
checksum="root",
|
||||
mime_type="application/pdf",
|
||||
content="root-content",
|
||||
)
|
||||
newest = Document.objects.create(
|
||||
title="newest",
|
||||
checksum="newest",
|
||||
mime_type="application/pdf",
|
||||
content="newest-content",
|
||||
)
|
||||
older = Document.objects.create(
|
||||
title="older",
|
||||
checksum="older",
|
||||
mime_type="application/pdf",
|
||||
root_document=root,
|
||||
version_index=1,
|
||||
content="older-content",
|
||||
)
|
||||
# Assigned last, so `newest` has the lower id despite being the later version
|
||||
newest.root_document = root
|
||||
newest.version_index = 2
|
||||
newest.save()
|
||||
return root, newest, older
|
||||
|
||||
def test_retrieve_uses_version_index_not_id_for_latest(self) -> None:
|
||||
root, _, _ = self._make_root_with_out_of_order_versions()
|
||||
|
||||
resp = self.client.get(f"/api/documents/{root.id}/")
|
||||
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(resp.data["content"], "newest-content")
|
||||
|
||||
def test_list_uses_version_index_not_id_for_latest(self) -> None:
|
||||
self._make_root_with_out_of_order_versions()
|
||||
|
||||
resp = self.client.get("/api/documents/?fields=id,content")
|
||||
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(
|
||||
[doc["content"] for doc in resp.data["results"]],
|
||||
["newest-content"],
|
||||
)
|
||||
|
||||
def test_versions_are_listed_newest_first_with_root_last(self) -> None:
|
||||
root, newest, older = self._make_root_with_out_of_order_versions()
|
||||
|
||||
resp = self.client.get(f"/api/documents/{root.id}/")
|
||||
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(
|
||||
[(version["id"], version["is_root"]) for version in resp.data["versions"]],
|
||||
[(newest.id, False), (older.id, False), (root.id, True)],
|
||||
)
|
||||
|
||||
|
||||
class TestVersionAwareFilters(TestCase):
|
||||
def test_title_content_filter_falls_back_to_content(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user