diff options
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 = [ | 
