diff options
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 | 
