diff options
| -rw-r--r-- | archaeological_context_records/tests.py | 21 | ||||
| -rw-r--r-- | archaeological_files/tests.py | 18 | ||||
| -rw-r--r-- | archaeological_files/views.py | 2 | ||||
| -rw-r--r-- | archaeological_finds/tests.py | 74 | ||||
| -rw-r--r-- | archaeological_operations/tests.py | 30 | ||||
| -rw-r--r-- | ishtar_common/tests.py | 103 | 
6 files changed, 197 insertions, 51 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index cbb5e0775..32e97c730 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -38,7 +38,7 @@ from archaeological_operations import models as models_ope  from archaeological_context_records import models  from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \ -    create_superuser, create_user, TestCase +    create_superuser, create_user, TestCase, AutocompleteTestBase, AcItem  from archaeological_context_records import views @@ -839,3 +839,22 @@ class ContextRecordWizardCreationTest(WizardTest, ContextRecordInit, TestCase):          # identical datings, only one should be finaly save          cr = models.ContextRecord.objects.order_by('-pk')[0]          self.assertEqual(cr.datings.count(), 1) + + +class AutocompleteTest(AutocompleteTestBase, TestCase): +    fixtures = CONTEXT_RECORD_FIXTURES +    models = [ +        AcItem(models.ContextRecord, 'autocomplete-contextrecord', +               prepare_func="create_cr"), +    ] + +    def create_cr(self, base_name): +        ope, __ = models_ope.Operation.objects.get_or_create( +            common_name="Test", +            operation_type=models_ope.OperationType.objects.all()[0] +        ) +        item, __ = models.ContextRecord.objects.get_or_create( +            operation=ope, +            label=base_name +        ) +        return item, None diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py index d78fa0e68..b8755ecbd 100644 --- a/archaeological_files/tests.py +++ b/archaeological_files/tests.py @@ -25,7 +25,8 @@ from django.contrib.auth.models import User  from django.core.urlresolvers import reverse  from django.test.client import Client -from ishtar_common.tests import TestCase, COMMON_FIXTURES, create_superuser +from ishtar_common.tests import TestCase, COMMON_FIXTURES, create_superuser, \ +    AutocompleteTestBase, AcItem  from ishtar_common.models import Town, IshtarSiteProfile  from archaeological_files import models @@ -302,3 +303,18 @@ class DashboardTest(TestCase, FileInit):          response = c.get(reverse(url))          self.assertEqual(response.status_code, 200) + + +class AutocompleteTest(AutocompleteTestBase, TestCase): +    fixtures = FILE_TOWNS_FIXTURES +    models = [ +        AcItem(models.File, 'autocomplete-file', +               prepare_func="create_file"), +    ] + +    def create_file(self, base_name): +        item, __ = models.File.objects.get_or_create( +            name=base_name, +            file_type=models.FileType.objects.all()[0] +        ) +        return item, None diff --git a/archaeological_files/views.py b/archaeological_files/views.py index e038c515f..50f3a86d2 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -58,7 +58,7 @@ def autocomplete_file(request):      for q in q.split(' '):          extra = Q(internal_reference__icontains=q) | \              Q(towns__name__icontains=q) | \ -            Q(address__icontains=q) +            Q(address__icontains=q) | Q(name__icontains=q)          try:              int(q)              extra = extra | Q(year=q) | Q(numeric_reference=q) diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index d40c9b19e..38cee1a91 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -39,11 +39,13 @@ from archaeological_finds import models, views  from archaeological_warehouse.models import Warehouse, WarehouseType, \      ContainerType, Container, WarehouseDivision, WarehouseDivisionLink, \      ContainerLocalisation +from archaeological_operations.models import Operation, OperationType +from archaeological_context_records.models import ContextRecord  from ishtar_common import forms_common  from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \ -    TestCase, create_user, create_superuser +    TestCase, create_user, create_superuser, AutocompleteTestBase, AcItem  from archaeological_operations.tests import ImportTest, create_operation  from archaeological_context_records.tests import ContextRecordInit, \      CONTEXT_RECORD_FIXTURES, CONTEXT_RECORD_TOWNS_FIXTURES @@ -68,7 +70,11 @@ WAREHOUSE_FIXTURES = FIND_FIXTURES + [  class FindInit(ContextRecordInit):      test_context_records = False -    def create_finds(self, data_base={}, data={}, user=None, force=False): +    def create_finds(self, data_base=None, data=None, user=None, force=False): +        if not data_base: +            data_base = {} +        if not data: +            data = {}          if not getattr(self, 'finds', None):              self.finds = []          if not getattr(self, 'base_finds', None): @@ -1740,7 +1746,7 @@ class GeomaticTest(FindInit, TestCase):          cr = ContextRecord.objects.get(pk=base_find.context_record.pk)          cr.point_2d = 'SRID=4326;' + center          cr.point_source = 'P' -        cr.point_source_item = unicode(ContextRecord._meta.verbose_name) +        cr.point_source_item = str(ContextRecord._meta.verbose_name)          cr.save()          cr = ContextRecord.objects.get(pk=base_find.context_record.pk)          cr.x = cr.point_2d.x @@ -1758,7 +1764,7 @@ class GeomaticTest(FindInit, TestCase):          self.assertEqual(base_find.multi_polygon, cr.multi_polygon)          self.assertEqual(base_find.point_source, 'P')  # precise          self.assertEqual(base_find.point_source_item, -                         unicode(ContextRecord._meta.verbose_name)) +                         str(ContextRecord._meta.verbose_name))          # overload of coordinates by form          base_find = models.BaseFind.objects.get(pk=base_find.pk) @@ -1823,7 +1829,7 @@ class GeomaticTest(FindInit, TestCase):          cr = ContextRecord.objects.get(pk=base_find.context_record.pk)          cr.multi_polygon = 'SRID=4326;' + limit          cr.multi_polygon_source = 'P' -        cr.multi_polygon_source_item = unicode(ContextRecord._meta.verbose_name) +        cr.multi_polygon_source_item = str(ContextRecord._meta.verbose_name)          cr.save()          cr = ContextRecord.objects.get(pk=base_find.context_record.pk)          base_find = models.BaseFind.objects.get(pk=base_find.pk) @@ -1833,7 +1839,7 @@ class GeomaticTest(FindInit, TestCase):          self.assertEqual(base_find.multi_polygon, cr.multi_polygon)          self.assertEqual(base_find.multi_polygon_source, 'P')  # precise          self.assertEqual(base_find.multi_polygon_source_item, -                         unicode(ContextRecord._meta.verbose_name)) +                         str(ContextRecord._meta.verbose_name))          base_find = models.BaseFind.objects.get(pk=base_find.pk)          base_find.point_source = None @@ -1849,3 +1855,59 @@ class GeomaticTest(FindInit, TestCase):          base_find = models.BaseFind.objects.get(pk=base_find.pk)          self.assertEqual(base_find.point_2d.ewkt, "SRID=4326;POINT (42 3)")          self.assertEqual(base_find.point_source, 'P') + + +class AutocompleteTest(AutocompleteTestBase, TestCase): +    fixtures = FIND_FIXTURES +    models = [ +        AcItem(models.ObjectType, 'autocomplete-objecttype'), +        AcItem(models.MaterialType, 'autocomplete-materialtype'), +        AcItem(models.TreatmentType, 'autocomplete-treatmenttype', +               default_values={"virtual": False}), +        AcItem(models.IntegrityType, 'autocomplete-integritytype'), +        AcItem(models.TreatmentFile, 'autocomplete-treatmentfile', +               prepare_func="create_treatmentfile"), +        AcItem(models.FindBasket, 'autocomplete-findbasket', +               prepare_func="create_findbasket"), +        AcItem(models.Find, 'autocomplete-find', prepare_func="create_find"), +        AcItem(models.Treatment, 'autocomplete-treatment', +               prepare_func='create_treatment'), +    ] + +    def create_treatmentfile(self, base_name): +        item, __ = models.TreatmentFile.objects.get_or_create( +            name=base_name, +            type=models.TreatmentFileType.objects.all()[0] +        ) +        return item, None + +    def create_treatment(self, base_name): +        item, __ = models.Treatment.objects.get_or_create( +            label=base_name, +            treatment_state=models.TreatmentState.objects.all()[0] +        ) +        return item, None + +    def create_findbasket(self, base_name): +        item, __ = models.FindBasket.objects.get_or_create( +            label=base_name, +        ) +        item.user = self.user.ishtaruser +        item.save() +        return item, None + +    def create_find(self, base_name): +        ope, __ = Operation.objects.get_or_create( +            common_name="Test", +            operation_type=OperationType.objects.all()[0] +        ) +        cr, __ = ContextRecord.objects.get_or_create( +            operation=ope, +            label=base_name +        ) +        base_find = models.BaseFind.objects.create(context_record=cr) +        find = models.Find.objects.create( +            label=base_name, +        ) +        find.base_finds.add(base_find) +        return find, None diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index e1f29b293..7867116fb 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -52,7 +52,8 @@ from archaeological_context_records.models import Unit, ContextRecord  from ishtar_common import forms_common  from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \ -    create_superuser, create_user, TestCase, OPERATION_FIXTURES +    create_superuser, create_user, TestCase, OPERATION_FIXTURES, \ +    AutocompleteTestBase, AcItem  OPERATION_TOWNS_FIXTURES = \ @@ -2836,3 +2837,30 @@ class DocumentWizardDeleteTest(WizardTest, OperationInitTest, TestCase):          # operation not deleted with the document          self.assertEqual(models.Operation.objects.filter(              pk=self.ope_id).count(), 1) + + +class AutocompleteTest(AutocompleteTestBase, TestCase): +    fixtures = OPERATION_FIXTURES +    models = [ +        AcItem(models.Operation, 'autocomplete-operation', +               prepare_func="create_operation"), +        AcItem(models.ArchaeologicalSite, 'autocomplete-archaeologicalsite', +               "reference"), +        AcItem(models.Operation, 'autocomplete-patriarche', +               prepare_func="create_operation_patriarche", +               id_key="code_patriarche", one_word_search=True), +    ] + +    def create_operation(self, base_name): +        item, __ = models.Operation.objects.get_or_create( +            common_name=base_name, +            operation_type=models.OperationType.objects.all()[0] +        ) +        return item, None + +    def create_operation_patriarche(self, base_name): +        item, __ = models.Operation.objects.get_or_create( +            code_patriarche=base_name, +            operation_type=models.OperationType.objects.all()[0] +        ) +        return item, None diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 9f97fd33b..07fa08750 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -630,22 +630,18 @@ class UserProfileTest(TestCase):          ) -class AutocompleteTest(TestCase): -    fixtures = OPERATION_FIXTURES -    models = [ -        (models.User, 'autocomplete-user', "username", None), -        (models.User, 'autocomplete-ishtaruser', "username", None), -        (models.Person, 'autocomplete-person', "name", None), -        (models.Person, 'autocomplete-person-permissive', "name", None), -        (models.Town, 'autocomplete-town', "name", None), -        (models.Town, 'autocomplete-advanced-town', None, -         "create_advanced_town"), -        (models.Department, "autocomplete-department", "label", None), -        (models.Author, "autocomplete-author", None, "create_author"), -        (models.Organization, 'autocomplete-organization', None, -         "create_orga"), -    ] - +class AcItem: +    def __init__(self, model, url, lbl_key=None, prepare_func=None, +                 id_key="pk", one_word_search=False, default_values=None): +        self.model, self.url, self.lbl_key = model, url, lbl_key +        self.prepare_func, self.id_key = prepare_func, id_key +        self.one_word_search = one_word_search +        self.default_values = default_values +        if not lbl_key and not prepare_func: +            self.lbl_key = "label" + + +class AutocompleteTestBase:      def setUp(self):          self.password = 'mypassword'          self.username = "myuser" @@ -653,31 +649,14 @@ class AutocompleteTest(TestCase):              self.username, 'myemail@test.com', self.password)          user.set_password(self.password)          user.save() +        self.user = user          self.client = Client()          self.client.login(username=self.username, password=self.password) -    def create_advanced_town(self, base_name): -        town, __ = models.Town.objects.get_or_create(name=base_name) -        dep, __ = models.Department.objects.get_or_create(label="Mydepartment", -                                                          number=999) -        town.departement = dep -        town.save() -        return town, "Mydepart" - -    def create_author(self, base_name): -        person, __ = models.Person.objects.get_or_create(name=base_name) -        author, __ = models.Author.objects.get_or_create( -            person=person, author_type=models.AuthorType.objects.all()[0]) -        return author, None - -    def create_orga(self, base_name): -        orga, __ = models.Organization.objects.get_or_create( -            name=base_name, -            organization_type=models.OrganizationType.objects.all()[0]) -        return orga, None -      def test_autocomplete(self): -        for model, url, lbl_key, prepare_func in self.models: +        for mdl in self.models: +            model, url, lbl_key = mdl.model, mdl.url, mdl.lbl_key +            prepare_func = mdl.prepare_func              url = reverse(url)              base_name = "tralala lere"              search_term = "trala" @@ -686,8 +665,10 @@ class AutocompleteTest(TestCase):                  if extra_search:                      search_term += " " + extra_search              else: -                item, __ = model.objects.get_or_create( -                    **{lbl_key: base_name}) +                create_dict = {lbl_key: base_name} +                if mdl.default_values: +                    create_dict.update(mdl.default_values) +                item, __ = model.objects.get_or_create(**create_dict)              response = self.client.get(url, {"term": search_term})              self.assertEqual(                  response.status_code, 200, @@ -698,10 +679,12 @@ class AutocompleteTest(TestCase):                  msg="{} result for '{}' expected 1 - {}".format(                      len(data), search_term, url))              self.assertEqual( -                data[0]['id'], item.pk, +                data[0]['id'], getattr(item, mdl.id_key),                  msg="id: {} expected {} for '{}' - {}".format(                      data[0]['id'], item.pk, search_term, url)) +            if mdl.one_word_search: +                continue              search_term = "ler " + search_term              response = self.client.get(url, {"term": search_term})              self.assertEqual( @@ -713,11 +696,49 @@ class AutocompleteTest(TestCase):                  msg="{} result for '{}' expected 1 - {}".format(                      len(data), search_term, url))              self.assertEqual( -                data[0]['id'], item.pk, +                data[0]['id'], getattr(item, mdl.id_key),                  msg="id: {} expected {} for '{}' - {}".format(                      data[0]['id'], item.pk, search_term, url)) +class AutocompleteTest(AutocompleteTestBase, TestCase): +    fixtures = OPERATION_FIXTURES +    models = [ +        AcItem(models.User, 'autocomplete-user', "username"), +        AcItem(models.User, 'autocomplete-ishtaruser', "username"), +        AcItem(models.Person, 'autocomplete-person', "name"), +        AcItem(models.Person, 'autocomplete-person-permissive', "name"), +        AcItem(models.Town, 'autocomplete-town', "name"), +        AcItem(models.Town, 'autocomplete-advanced-town', +               prepare_func="create_advanced_town"), +        AcItem(models.Department, "autocomplete-department", "label"), +        AcItem(models.Author, "autocomplete-author", +               prepare_func="create_author"), +        AcItem(models.Organization, 'autocomplete-organization', +               prepare_func="create_orga"), +    ] + +    def create_advanced_town(self, base_name): +        town, __ = models.Town.objects.get_or_create(name=base_name) +        dep, __ = models.Department.objects.get_or_create(label="Mydepartment", +                                                          number=999) +        town.departement = dep +        town.save() +        return town, "Mydepart" + +    def create_author(self, base_name): +        person, __ = models.Person.objects.get_or_create(name=base_name) +        author, __ = models.Author.objects.get_or_create( +            person=person, author_type=models.AuthorType.objects.all()[0]) +        return author, None + +    def create_orga(self, base_name): +        orga, __ = models.Organization.objects.get_or_create( +            name=base_name, +            organization_type=models.OrganizationType.objects.all()[0]) +        return orga, None + +  class AdminGenTypeTest(TestCase):      fixtures = OPERATION_FIXTURES      gen_models = [  | 
