mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-08-19 17:23:21 +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.status_code, status.HTTP_200_OK)
|
||||||
self.assertEqual(resp.data["content"], "v1-content")
|
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):
|
class TestVersionAwareFilters(TestCase):
|
||||||
def test_title_content_filter_falls_back_to_content(self) -> None:
|
def test_title_content_filter_falls_back_to_content(self) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user