summaryrefslogtreecommitdiff
path: root/archaeological_operations/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-07-02 19:58:25 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-08-13 18:26:03 +0200
commit31873237b90c588f49f403721a382df59719ca1b (patch)
tree38143096a878386d25f9d950a8c4248a30187344 /archaeological_operations/tests.py
parent8533647dd9c2eb008ccfca14813e055e1f5708ef (diff)
downloadIshtar-31873237b90c588f49f403721a382df59719ca1b.tar.bz2
Ishtar-31873237b90c588f49f403721a382df59719ca1b.zip
Full text search: manage facet search (simple, hierarchic, OR) (refs #4180)
Diffstat (limited to 'archaeological_operations/tests.py')
-rw-r--r--archaeological_operations/tests.py59
1 files changed, 56 insertions, 3 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index 381efd070..1480eb502 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -33,7 +33,7 @@ from django.db.models import Q
from django.test.client import Client
from django.contrib.auth.models import User, Permission
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ugettext_lazy as _, pgettext
import models
from archaeological_operations import views
@@ -1538,11 +1538,64 @@ class OperationSearchTest(TestCase, OperationInitTest):
self.assertEqual(result['recordsTotal'], 2)
# open search
- response = c.get(reverse('get-operation'),
- {'search_vector': 'cha*'})
+ response = c.get(reverse('get-operation'), {'search_vector': 'cha*'})
result = json.loads(response.content)
self.assertEqual(result['recordsTotal'], 3)
+ def test_facet_search_vector(self):
+ ope1 = self.operations[0]
+ ope2 = self.operations[1]
+ ope3 = self.operations[2]
+ c = Client()
+ c.login(username=self.username, password=self.password)
+
+ neo = models.Period.objects.get(txt_idx='neolithic')
+ final_neo = models.Period.objects.get(txt_idx='final-neolithic')
+ gallo = models.Period.objects.get(txt_idx="gallo-roman")
+ ope1.periods.add(final_neo)
+ ope1.periods.add(gallo)
+ ope2.periods.add(neo)
+ ope3.periods.add(gallo)
+
+ villa = models.RemainType.objects.get(txt_idx='villa')
+ ope1.remains.add(villa)
+
+ # simple
+ search_q = unicode(
+ pgettext("key for text search (no accent, no spaces)", u"period")
+ )
+ search = {'search_vector': u'{}="{}"'.format(search_q, final_neo.label)}
+ response = c.get(reverse('get-operation'), search)
+ self.assertEqual(response.status_code, 200)
+ result = json.loads(response.content)
+ self.assertEqual(result['recordsTotal'], 1)
+
+ # hierarchic
+ search = {'search_vector': u'{}="{}"'.format(search_q, neo.label)}
+ response = c.get(reverse('get-operation'), search)
+ self.assertEqual(response.status_code, 200)
+ result = json.loads(response.content)
+ self.assertEqual(result['recordsTotal'], 2)
+
+ # OR
+ search = {'search_vector': u'{}="{}";"{}"'.format(search_q, neo.label,
+ gallo.label)}
+ response = c.get(reverse('get-operation'), search)
+ self.assertEqual(response.status_code, 200)
+ result = json.loads(response.content)
+ self.assertEqual(result['recordsTotal'], 3)
+
+ # non hierarchic search
+ search_q = unicode(
+ pgettext("key for text search (no accent, no spaces)", u"remain")
+ )
+ search = {'search_vector': u'{}="{}"'.format(search_q, villa.label)}
+ response = c.get(reverse('get-operation'), search)
+ self.assertEqual(response.status_code, 200)
+ result = json.loads(response.content)
+ self.assertEqual(result['recordsTotal'], 1)
+
+
def create_relations(self):
rel1 = models.RelationType.objects.create(
symmetrical=True, label='Include', txt_idx='include')