diff options
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 |
commit | 6cf86374a48ab080f5dfd91ea53cd090a783744e (patch) | |
tree | 1c77a128fdf6de255705ef2f5584c32103d2b29a /archaeological_finds | |
parent | 4e61947798d61d14bd07b8c826e216994392e0e4 (diff) | |
download | Ishtar-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.py | 55 |
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] |