diff options
Diffstat (limited to 'archaeological_finds/tests.py')
| -rw-r--r-- | archaeological_finds/tests.py | 138 | 
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', | 
