diff --git a/arkindex/process/models.py b/arkindex/process/models.py index 3c5eb2eaa7bfc61ad338ec55fba9c433facd5013..f6fd0dd8d986cb3546c5cc58418dfea67dae867c 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 dc69c9734f620296462c965b3e41ddf9368680aa..0881b4fe1cf77cc96e507d7831c58e916329164d 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): """