Fixes the next ASN logic to account for no ASNs yet being assigned

This commit is contained in:
Trenton H 2024-01-16 08:52:35 -08:00
parent e16645b146
commit 11beaa1f2f
2 changed files with 33 additions and 9 deletions

View File

@ -2051,6 +2051,35 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.content, b"1000")
def test_next_asn_no_documents_with_asn(self):
"""
GIVEN:
- Existing document, but with no ASN assugned
WHEN:
- API request to get next ASN
THEN:
- ASN 1 is returned
"""
user1 = User.objects.create_user(username="test1")
user1.user_permissions.add(*Permission.objects.all())
user1.save()
doc1 = Document.objects.create(
title="test",
mime_type="application/pdf",
content="this is a document 1",
checksum="1",
)
doc1.save()
self.client.force_authenticate(user1)
resp = self.client.get(
"/api/documents/next_asn/",
)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.content, b"1")
class TestDocumentApiV2(DirectoriesMixin, APITestCase):
def setUp(self):

View File

@ -757,16 +757,11 @@ class UnifiedSearchViewSet(DocumentViewSet):
@action(detail=False, methods=["GET"], name="Get Next ASN")
def next_asn(self, request, *args, **kwargs):
return Response(
(
Document.objects.filter(archive_serial_number__gte=0)
.order_by("archive_serial_number")
.last()
.archive_serial_number
or 0
)
+ 1,
max_asn = Document.objects.aggregate(Max("archive_serial_number")).get(
"archive_serial_number__max",
)
max_asn = 0 if max_asn is None else max_asn + 1
return Response(max_asn)
class LogViewSet(ViewSet):