summaryrefslogtreecommitdiff
path: root/ishtar_common/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-03-09 12:36:01 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-17 13:21:27 +0200
commit3af2e203536c5f17f4a3f627c3b6990348118aa0 (patch)
tree6e07df57d31782cc3148fd314a20e8ed11e8312f /ishtar_common/tests.py
parenta820943b0f7d089075187e8cacb62f89f3460f83 (diff)
downloadIshtar-3af2e203536c5f17f4a3f627c3b6990348118aa0.tar.bz2
Ishtar-3af2e203536c5f17f4a3f627c3b6990348118aa0.zip
Test and fix autocomplete for ishtar common
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r--ishtar_common/tests.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index db2e956ad..03f8e3a69 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -21,6 +21,7 @@ from bs4 import BeautifulSoup as Soup
import csv
import datetime
import io
+import json
import os
import shutil
from io import StringIO
@@ -626,6 +627,94 @@ 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"),
+ ]
+
+ def setUp(self):
+ self.password = 'mypassword'
+ self.username = "myuser"
+ user = User.objects.create_superuser(
+ self.username, 'myemail@test.com', self.password)
+ user.set_password(self.password)
+ user.save()
+ 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:
+ url = reverse(url)
+ base_name = "tralala lere"
+ search_term = "trala"
+ if prepare_func:
+ item, extra_search = getattr(self, prepare_func)(base_name)
+ if extra_search:
+ search_term += " " + extra_search
+ else:
+ item, __ = model.objects.get_or_create(
+ **{lbl_key: base_name})
+ response = self.client.get(url, {"term": search_term})
+ self.assertEqual(
+ response.status_code, 200,
+ msg="Status code != 200 - {}".format(url))
+ data = json.loads(response.content.decode())
+ self.assertEqual(
+ len(data), 1,
+ msg="{} result for '{}' expected 1 - {}".format(
+ len(data), search_term, url))
+ self.assertEqual(
+ data[0]['id'], item.pk,
+ msg="id: {} expected {} for '{}' - {}".format(
+ data[0]['id'], item.pk, search_term, url))
+
+ search_term = "ler " + search_term
+ response = self.client.get(url, {"term": search_term})
+ self.assertEqual(
+ response.status_code, 200,
+ msg="Status code != 200 when reaching {}".format(url))
+ data = json.loads(response.content.decode())
+ self.assertEqual(
+ len(data), 1,
+ msg="{} result for '{}' expected 1 - {}".format(
+ len(data), search_term, url))
+ self.assertEqual(
+ data[0]['id'], item.pk,
+ msg="id: {} expected {} for '{}' - {}".format(
+ data[0]['id'], item.pk, search_term, url))
+
+
class AdminGenTypeTest(TestCase):
fixtures = OPERATION_FIXTURES
gen_models = [