From d9563b71679398e6c5a8b45295bb293121a57229 Mon Sep 17 00:00:00 2001
From: mlbonhomme <bonhomme@teklia.com>
Date: Thu, 15 Dec 2022 15:44:05 +0100
Subject: [PATCH] Make process elements name filtering case-insensitive

---
 arkindex/process/models.py                    |  2 +-
 .../process/tests/test_process_elements.py    | 23 +++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/arkindex/process/models.py b/arkindex/process/models.py
index acd0ff13bd..3c0bee0a5b 100644
--- a/arkindex/process/models.py
+++ b/arkindex/process/models.py
@@ -181,7 +181,7 @@ class Process(IndexableModel):
             "corpus_id": self.corpus_id,
         }
         if self.name_contains:
-            filters['name__contains'] = self.name_contains
+            filters['name__icontains'] = self.name_contains
         if self.element_type:
             filters['type_id'] = self.element_type_id
 
diff --git a/arkindex/process/tests/test_process_elements.py b/arkindex/process/tests/test_process_elements.py
index e029b15e98..463a700a40 100644
--- a/arkindex/process/tests/test_process_elements.py
+++ b/arkindex/process/tests/test_process_elements.py
@@ -233,6 +233,29 @@ class TestProcessElements(FixtureAPITestCase):
             for element in elements
         ])
 
+    def test_filter_name_case_insensitive(self):
+        self.process.name_contains = "Rhum"
+        self.process.load_children = True
+        self.process.save()
+        elements = [self.folder_1, self.page_1, self.page_5]
+
+        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)
+        data = response.json()
+        self.assertEqual(data["count"], None)
+        self.assertEqual(data["next"], None)
+        self.assertCountEqual(data["results"], [
+            {
+                'id': str(element.id),
+                'type_id': str(element.type_id),
+                'name': element.name,
+                'confidence': element.confidence,
+            }
+            for element in elements
+        ])
+
     def test_filter_name_from_element(self):
         self.process.element = self.folder_1
         self.process.name_contains = "rhum"
-- 
GitLab