summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-02-28 12:23:51 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-02-28 16:03:28 +0100
commit6cf86374a48ab080f5dfd91ea53cd090a783744e (patch)
tree1c77a128fdf6de255705ef2f5584c32103d2b29a /archaeological_finds
parent4e61947798d61d14bd07b8c826e216994392e0e4 (diff)
downloadIshtar-6cf86374a48ab080f5dfd91ea53cd090a783744e.tar.bz2
Ishtar-6cf86374a48ab080f5dfd91ea53cd090a783744e.zip
Search: Fix many excluded search (refs #4793, refs #5209)
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/tests.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 0f7645ec8..342f3d127 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -1340,6 +1340,24 @@ class FindSearchTest(FindInit, TestCase, SearchText):
]
self._test_search(c, result, context="Text period search")
+ def test_operation_search(self):
+ values = [
+ str(f.operation.code_patriarche)
+ for f in self.finds
+ ]
+
+ c = Client()
+ c.login(username=self.username, password=self.password)
+
+ key = str(pgettext_lazy("key for text search", "code-patriarche"))
+ result = [
+ (f'{key}="{values[0]}"', 1),
+ (f'-{key}="{values[0]}"', 1),
+ (f'{key}="{values[0]}" {key}="{values[1]}"', 2),
+ (f'-{key}="{values[0]}" -{key}="{values[1]}"', 0),
+ ]
+ self._test_search(c, result, context="Operation")
+
def test_operator_search(self):
operation = self.operations[0]
operator = Organization.objects.create(
@@ -1471,6 +1489,43 @@ class FindSearchTest(FindInit, TestCase, SearchText):
res = json.loads(response.content.decode())
self.assertEqual(res["recordsTotal"], 1)
+ def test_mixed_search(self):
+ ope_values = [
+ str(f.operation.code_patriarche)
+ for f in self.finds
+ ]
+ neo = Period.objects.get(txt_idx="neolithic")
+ final_neo = Period.objects.get(txt_idx="final-neolithic")
+ metal = models.MaterialType.objects.get(txt_idx="metal")
+ iron_metal = models.MaterialType.objects.get(txt_idx="iron_metal")
+
+ find = self.finds[0]
+ find2 = self.finds[1]
+ dating = Dating.objects.create(period=final_neo)
+ find.datings.add(dating)
+ find.material_types.add(iron_metal)
+ find2.material_types.add(iron_metal)
+ find = models.Find.objects.get(pk=find.pk)
+ find.save()
+ find2 = models.Find.objects.get(pk=find2.pk)
+ find2.save()
+
+ material_key = str(pgettext_lazy("key for text search", "material"))
+ period_key = str(pgettext_lazy("key for text search", "datings-period"))
+ ope_key = str(pgettext_lazy("key for text search", "code-patriarche"))
+ result = [
+ (f'{ope_key}="{ope_values[0]}" {period_key}="{neo}" '
+ f'{material_key}={iron_metal}', 1),
+ (f'-{ope_key}="{ope_values[0]}" {period_key}="{neo}"', 0),
+ (f'-{ope_key}="{ope_values[0]}" -{period_key}="{neo}"', 1),
+ (f'-{ope_key}="{ope_values[0]}" -{period_key}="{neo}" '
+ f'-{material_key}={metal}', 0),
+ ]
+
+ c = Client()
+ c.login(username=self.username, password=self.password)
+ self._test_search(c, result, context="Operation")
+
def test_search_with_callable(self):
find = self.finds[0]
find2 = self.finds[1]