diff options
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 |
commit | e05b9c69dc16f9782bcf3f3be9670a3097b4ca51 (patch) | |
tree | 6e07df57d31782cc3148fd314a20e8ed11e8312f /ishtar_common/tests.py | |
parent | 9f8a4a5bc5ff60a93e5c7db2bb21e56e37af724f (diff) | |
download | Ishtar-e05b9c69dc16f9782bcf3f3be9670a3097b4ca51.tar.bz2 Ishtar-e05b9c69dc16f9782bcf3f3be9670a3097b4ca51.zip |
Test and fix autocomplete for ishtar common
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r-- | ishtar_common/tests.py | 89 |
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 = [ |