summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_context_records/tests.py21
-rw-r--r--archaeological_files/tests.py18
-rw-r--r--archaeological_files/views.py2
-rw-r--r--archaeological_finds/tests.py74
-rw-r--r--archaeological_operations/tests.py30
-rw-r--r--ishtar_common/tests.py103
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 = [