summaryrefslogtreecommitdiff
path: root/archaeological_finds/tests.py
diff options
context:
space:
mode:
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
commitb1b72481c15a81b506e48519862d3e32bb7c89be (patch)
treec01e6044250846edfaebf6faf1f1cdd00cbac89d /archaeological_finds/tests.py
parent61dee247a1614517c8fb73eb7ada2e33019134b9 (diff)
downloadIshtar-b1b72481c15a81b506e48519862d3e32bb7c89be.tar.bz2
Ishtar-b1b72481c15a81b506e48519862d3e32bb7c89be.zip
Search: dynamic fields manage open search
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r--archaeological_finds/tests.py78
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