From 9b87de2512c6e9c05dfb81b71999f662b0e2c497 Mon Sep 17 00:00:00 2001 From: mlbonhomme <bonhomme@teklia.com> Date: Tue, 10 Dec 2024 14:16:36 +0100 Subject: [PATCH] Return ProcessElements for export mode processes --- arkindex/process/models.py | 2 +- .../process/tests/test_process_elements.py | 57 +++++++++++-------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/arkindex/process/models.py b/arkindex/process/models.py index 3c5eb2eaa7..f6fd0dd8d9 100644 --- a/arkindex/process/models.py +++ b/arkindex/process/models.py @@ -370,7 +370,7 @@ class Process(IndexableModel): """ Return a queryset of elements involved in this process """ - if self.mode != ProcessMode.Workers: + if self.mode not in [ProcessMode.Workers, ProcessMode.Export]: return Element.objects.none() elements = None diff --git a/arkindex/process/tests/test_process_elements.py b/arkindex/process/tests/test_process_elements.py index dc69c9734f..0881b4fe1c 100644 --- a/arkindex/process/tests/test_process_elements.py +++ b/arkindex/process/tests/test_process_elements.py @@ -537,13 +537,14 @@ class TestProcessElements(FixtureAPITestCase): for element in elements ]) - def test_non_workers(self): + def test_non_supported_modes(self): self.process.load_children = True self.client.force_login(self.superuser) - # Every mode other than Workers never returns elements + # Every mode other than Workers and Export never returns elements modes = list(ProcessMode) modes.remove(ProcessMode.Workers) + modes.remove(ProcessMode.Export) # Local processes do not have a corpus, causing HTTP 404 modes.remove(ProcessMode.Local) @@ -576,33 +577,41 @@ class TestProcessElements(FixtureAPITestCase): self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.json(), {"detail": "No Process matches the given query."}) - def test_workers_mode(self): - # The Workers mode returns some elements + def test_supported_process_modes(self): + """ + ListProcessElements returns elements when the process is of mode Workers or Export + """ + supported_modes = [ProcessMode.Workers, ProcessMode.Export] + elements = Element.objects.filter(corpus=self.private_corpus).order_by("id") # This tests only supports up to 20 elements self.assertLessEqual(elements.count(), 20) - self.process.corpus = self.private_corpus - self.process.load_children = True - self.process.save() - self.client.force_login(self.superuser) - with self.assertNumQueries(6): - response = self.client.get(reverse("api:process-elements-list", kwargs={"pk": self.process.id})) - self.assertEqual(response.status_code, status.HTTP_200_OK) + for mode in supported_modes: + with self.subTest(mode=mode): + self.process.corpus = self.private_corpus + self.process.load_children = True + self.process.mode = mode + self.process.save() + self.client.force_login(self.superuser) - data = response.json() - self.assertIsNone(data["count"]) - self.assertIsNone(data["previous"]) - self.assertIsNone(data["next"]) - self.assertListEqual(data["results"], [ - { - "id": str(element.id), - "type_id": str(element.type_id), - "name": element.name, - "confidence": element.confidence, - } - for element in elements - ]) + with self.assertNumQueries(6): + response = self.client.get(reverse("api:process-elements-list", kwargs={"pk": self.process.id})) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + data = response.json() + self.assertIsNone(data["count"]) + self.assertIsNone(data["previous"]) + self.assertIsNone(data["next"]) + self.assertListEqual(data["results"], [ + { + "id": str(element.id), + "type_id": str(element.type_id), + "name": element.name, + "confidence": element.confidence, + } + for element in elements + ]) def test_list_elements_cursor_pagination(self): """ -- GitLab