From 66bbbb6075a766e3d314d0f6f21195fc0e2e5249 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Tue, 14 Jul 2026 08:48:52 -0500 Subject: [PATCH 1/3] [test]: added test for sorting in ascending order --- .../tests/test_views/test_sorting.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 specifyweb/backend/stored_queries/tests/test_views/test_sorting.py diff --git a/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py b/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py new file mode 100644 index 00000000000..24953f50a6e --- /dev/null +++ b/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py @@ -0,0 +1,32 @@ +from specifyweb.backend.stored_queries.tests.tests import SQLAlchemySetup +from .raw_query import get_simple_query +from django.test import Client +from unittest.mock import patch, Mock +import json + +class TestSorting(SQLAlchemySetup): + + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_sort_ascending(self, context: Mock): + context.return_value = TestSorting.test_session_context() + + c = Client() + c.force_login(self.specifyuser) + + query = get_simple_query(self.specifyuser).copy() + query["fields"][0]["sorttype"] = 1 # 0 --> no sort, 1 --> ascending, 2 --> descending + + response = c.post('/stored_query/ephemeral/', query, content_type="application/json") + self._assertStatusCodeEqual(response, 200) + + results = json.loads(response.content.decode())["results"] + + # Should have 5 results (5 collection objects from setUp) + self.assertEqual(len(results), 5) + + for i, row in enumerate(results): + self.assertEqual(row[1], f"num-{i}") + + + + From 25ec887b56f1c8a6962c4c961a0a75bb7d1c6044 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Tue, 14 Jul 2026 09:15:15 -0500 Subject: [PATCH 2/3] [test]: Added test to sort in ascending order --- .../tests/test_views/test_sorting.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py b/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py index 24953f50a6e..145ebba0379 100644 --- a/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py +++ b/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py @@ -28,5 +28,26 @@ def test_sort_ascending(self, context: Mock): self.assertEqual(row[1], f"num-{i}") + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + def test_sort_descending(self, context: Mock): + context.return_value = TestSorting.test_session_context() + + c = Client() + c.force_login(self.specifyuser) + + query = get_simple_query(self.specifyuser).copy() + query["fields"][0]["sorttype"] = 2 # 0 --> no sort, 1 --> ascending, 2 --> descending + + response = c.post('/stored_query/ephemeral/', query, content_type="application/json") + self._assertStatusCodeEqual(response, 200) + + results = json.loads(response.content.decode())["results"] + + # Should have 5 results (5 collection objects from setUp) + self.assertEqual(len(results), 5) + + for i, row in enumerate(results): + self.assertEqual(row[1], f"num-{4 - i}") + From f193affcb2e0c30b41a28c228755b4e20f828adb Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Tue, 14 Jul 2026 09:58:23 -0500 Subject: [PATCH 3/3] [fix]: Use deepcopy for query and fix sorttype in descending test --- .../backend/stored_queries/tests/test_views/test_sorting.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py b/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py index 145ebba0379..832c03d56d6 100644 --- a/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py +++ b/specifyweb/backend/stored_queries/tests/test_views/test_sorting.py @@ -3,6 +3,7 @@ from django.test import Client from unittest.mock import patch, Mock import json +import copy class TestSorting(SQLAlchemySetup): @@ -13,7 +14,7 @@ def test_sort_ascending(self, context: Mock): c = Client() c.force_login(self.specifyuser) - query = get_simple_query(self.specifyuser).copy() + query = copy.deepcopy(get_simple_query(self.specifyuser)) query["fields"][0]["sorttype"] = 1 # 0 --> no sort, 1 --> ascending, 2 --> descending response = c.post('/stored_query/ephemeral/', query, content_type="application/json") @@ -35,7 +36,7 @@ def test_sort_descending(self, context: Mock): c = Client() c.force_login(self.specifyuser) - query = get_simple_query(self.specifyuser).copy() + query = copy.deepcopy(get_simple_query(self.specifyuser)) query["fields"][0]["sorttype"] = 2 # 0 --> no sort, 1 --> ascending, 2 --> descending response = c.post('/stored_query/ephemeral/', query, content_type="application/json")