diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-02-01 11:57:10 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-02-01 11:57:10 +0100 |
commit | b844e394d6ea74e1d77d1cfcb667639329b9f911 (patch) | |
tree | c01e6044250846edfaebf6faf1f1cdd00cbac89d /archaeological_finds/tests.py | |
parent | 7bc356efd27f625618dda25e0abde2fda30d9850 (diff) | |
download | Ishtar-b844e394d6ea74e1d77d1cfcb667639329b9f911.tar.bz2 Ishtar-b844e394d6ea74e1d77d1cfcb667639329b9f911.zip |
Search: dynamic fields manage open search
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r-- | archaeological_finds/tests.py | 78 |
1 files changed, 76 insertions, 2 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index fc51cea70..9c023ade6 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -28,6 +28,7 @@ from django.core.urlresolvers import reverse from django.test.client import Client from ishtar_common.models import ImporterType, IshtarUser, ImporterColumn,\ FormaterType, ImportTarget, IshtarSiteProfile, ProfileType +from django.utils.translation import pgettext_lazy from ishtar_common.models import Person, get_current_profile, UserProfile, \ Town, Area, Document @@ -35,7 +36,8 @@ from archaeological_context_records.models import Period, Dating, \ ContextRecord, DatingType, DatingQuality from archaeological_finds import models, views from archaeological_warehouse.models import Warehouse, WarehouseType, \ - ContainerType, Container + ContainerType, Container, WarehouseDivision, WarehouseDivisionLink, \ + ContainerLocalisation from ishtar_common import forms_common @@ -516,11 +518,12 @@ class FindTest(FindInit, TestCase): class FindSearchTest(FindInit, TestCase): - fixtures = FIND_FIXTURES + fixtures = WAREHOUSE_FIXTURES model = models.Find def setUp(self): self.create_finds(force=True) + self.create_finds(force=True) self.username = 'myuser' self.password = 'mypassword' User.objects.create_superuser(self.username, 'myemail@test.com', @@ -685,6 +688,77 @@ class FindSearchTest(FindInit, TestCase): res = json.loads(response.content) self.assertEqual(res['recordsTotal'], 1) + def test_dynamic_field_search(self): + find = self.finds[0] + find2 = self.finds[1] + c = Client() + + warehouse = Warehouse.objects.create( + name="Lambda warehouse", + warehouse_type=WarehouseType.objects.all()[0]) + warehouse_div = WarehouseDivision.objects.create( + label="Salle", txt_idx='salle') + warehouse_div2 = WarehouseDivision.objects.create( + label=u"Étagère", txt_idx='etagere') + warehouse_div_lnk = WarehouseDivisionLink.objects.create( + warehouse=warehouse, + division=warehouse_div + ) + warehouse_div_lnk2 = WarehouseDivisionLink.objects.create( + warehouse=warehouse, + division=warehouse_div2 + ) + container = Container.objects.create( + location=warehouse, + responsible=warehouse, + container_type=ContainerType.objects.all()[0] + ) + ContainerLocalisation.objects.create(container=container, + division=warehouse_div_lnk, + reference="B2") + ContainerLocalisation.objects.create(container=container, + division=warehouse_div_lnk2, + reference="A5") + find.container_ref = container + find.container = container + find.save() + container2 = Container.objects.create( + location=warehouse, + responsible=warehouse, + container_type=ContainerType.objects.all()[0] + ) + ContainerLocalisation.objects.create(container=container2, + division=warehouse_div_lnk, + reference="B5") + ContainerLocalisation.objects.create(container=container2, + division=warehouse_div_lnk2, + reference="A5") + find2.container_ref = container2 + find2.container = container2 + find2.save() + + ref_div_key = unicode(pgettext_lazy("key for text search", + 'reference-division')) + "-" + + result = [ + (u'{}="{}"'.format(ref_div_key + "salle", "B2"), 1), + (u'{}="{}"'.format(ref_div_key + "etagere", "A5"), 2), + (u'{}="{}" {}="{}"'.format( + ref_div_key + "salle", "B2", ref_div_key + "etagere", "A5"), 1), + (u'{}="{}" {}="{}"'.format( + ref_div_key + "salle", "B*", ref_div_key + "etagere", "A5"), 2), + ] + c.login(username=self.username, password=self.password) + + for q, expected_result in result: + search = {'search_vector': q} + response = c.get(reverse('get-find'), search) + self.assertEqual(response.status_code, 200) + res = json.loads(response.content) + self.assertEqual(res['recordsTotal'], expected_result, + msg="{} result(s) where expected for search:" + " {}".format(expected_result, q)) + class FindPermissionTest(FindInit, TestCase): fixtures = FIND_FIXTURES |