summaryrefslogtreecommitdiff
path: root/archaeological_finds/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-01-30 13:56:52 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-01-30 13:56:52 +0100
commit42d91015eb14e607cfb6cd414175682553f429b8 (patch)
tree429269e02dbfe6cb9580f935eabb777024217004 /archaeological_finds/tests.py
parentdbefccd512ffed5e7d7d365f20f76720651cd578 (diff)
downloadIshtar-42d91015eb14e607cfb6cd414175682553f429b8.tar.bz2
Ishtar-42d91015eb14e607cfb6cd414175682553f429b8.zip
Fix material_types search for finds - add tests for hierarchical searches
Diffstat (limited to 'archaeological_finds/tests.py')
-rw-r--r--archaeological_finds/tests.py138
1 files changed, 136 insertions, 2 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 2d1367c58..34f95cf7d 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -17,7 +17,7 @@
# See the file COPYING for details.
-import datetime
+import json
from django.conf import settings
from django.contrib.auth.models import User
@@ -29,7 +29,7 @@ from ishtar_common.models import ImporterType, IshtarUser, ImporterColumn,\
FormaterType, ImportTarget
from ishtar_common.models import Person
-from archaeological_context_records.models import Period
+from archaeological_context_records.models import Period, Dating
from archaeological_finds import models, views
from archaeological_warehouse.models import Warehouse, WarehouseType
@@ -325,6 +325,140 @@ class FindTest(FindInit, TestCase):
response.content)
+class FindSearchTest(FindInit, TestCase):
+ fixtures = [settings.ROOT_PATH +
+ '../fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../ishtar_common/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_files/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_operations/fixtures/initial_data-fr.json',
+ settings.ROOT_PATH +
+ '../archaeological_finds/fixtures/initial_data-fr.json',
+ ]
+ model = models.Find
+
+ def setUp(self):
+ self.create_finds(force=True)
+ self.username = 'myuser'
+ self.password = 'mypassword'
+ User.objects.create_superuser(self.username, 'myemail@test.com',
+ self.password)
+ self.client = Client()
+
+ def testMaterialTypeHierarchicSearch(self):
+ find = self.finds[0]
+ c = Client()
+ metal = models.MaterialType.objects.get(txt_idx='metal')
+ iron_metal = models.MaterialType.objects.get(txt_idx='iron_metal')
+ not_iron_metal = models.MaterialType.objects.get(
+ txt_idx='not_iron_metal')
+ find.material_types.add(iron_metal)
+
+ search = {'material_types': iron_metal.pk}
+
+ # no result when no authentication
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(not json.loads(response.content))
+ c.login(username=self.username, password=self.password)
+
+ # one result for exact search
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(json.loads(response.content)['total'] == 1)
+
+ # no result for the brother
+ search = {'material_types': not_iron_metal.pk}
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(json.loads(response.content)['total'] == 0)
+
+ # one result for the father
+ search = {'material_types': metal.pk}
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(json.loads(response.content)['total'] == 1)
+
+ def testPeriodHierarchicSearch(self):
+ find = self.finds[0]
+ c = Client()
+
+ neo = Period.objects.get(txt_idx='neolithic')
+ final_neo = Period.objects.get(txt_idx='final_neolithic')
+ recent_neo = Period.objects.get(txt_idx='recent_neolithic')
+ dating = Dating.objects.create(
+ period=final_neo
+ )
+ find.datings.add(dating)
+
+ search = {'datings__period': final_neo.pk}
+
+ # no result when no authentication
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(not json.loads(response.content))
+
+ # one result for exact search
+ c.login(username=self.username, password=self.password)
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(json.loads(response.content)['total'], 1)
+
+ # no result for the brother
+ search = {'datings__period': recent_neo.pk}
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(json.loads(response.content)['total'], 0)
+
+ # one result for the father
+ search = {'datings__period': neo.pk}
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(json.loads(response.content)['total'], 1)
+
+ def testConservatoryStateHierarchicSearch(self):
+ find = self.finds[0]
+ c = Client()
+ cs1 = models.ConservatoryState.objects.all()[0]
+ cs1.parent = None
+ cs1.save()
+ cs2 = models.ConservatoryState.objects.all()[1]
+ cs2.parent = cs1
+ cs2.save()
+ cs3 = models.ConservatoryState.objects.all()[2]
+ cs3.parent = cs1
+ cs3.save()
+ find.conservatory_state = cs2
+ find.save()
+
+ search = {'conservatory_state': cs2.pk}
+
+ # no result when no authentication
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(not json.loads(response.content))
+ c.login(username=self.username, password=self.password)
+
+ # one result for exact search
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(json.loads(response.content)['total'] == 1)
+
+ # no result for the brother
+ search = {'conservatory_state': cs3.pk}
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(json.loads(response.content)['total'] == 0)
+
+ # one result for the father
+ search = {'conservatory_state': cs1.pk}
+ response = c.get(reverse('get-find'), search)
+ self.assertEqual(response.status_code, 200)
+ self.assertTrue(json.loads(response.content)['total'] == 1)
+
+
class PackagingTest(FindInit, TestCase):
fixtures = [settings.ROOT_PATH +
'../fixtures/initial_data.json',