summaryrefslogtreecommitdiff
path: root/ishtar_common/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-03-09 17:20:37 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-17 13:21:27 +0200
commitefdc83d806b06c03a5789b3ebaed177f593ca4e5 (patch)
treef603c879b5e7d4a82d9602cbdb5143056af01747 /ishtar_common/tests.py
parentb1f4a23679de9a561ed8ec3be9b79e851873bc0f (diff)
downloadIshtar-efdc83d806b06c03a5789b3ebaed177f593ca4e5.tar.bz2
Ishtar-efdc83d806b06c03a5789b3ebaed177f593ca4e5.zip
Autocomplete: small fix and general tests
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r--ishtar_common/tests.py103
1 files changed, 62 insertions, 41 deletions
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 = [