diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/tests.py | 103 |
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 = [ |