From 11f7440273ddc9bb63ae2271d6314cdf939fdde5 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 21 Oct 2020 12:27:14 +0200 Subject: [PATCH] Improved tests coverage. --- tests/settings.py | 11 ++++++ tests/test_fixtures.py | 2 + tests/test_models.py | 2 + tests/test_settings.py | 2 + tests/test_templatetags.py | 61 ++++++++++++++++++++++++++++- tests/urls.py | 20 ++++++++++ tests/urls_without_i18n_patterns.py | 15 +++++++ 7 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 tests/urls.py create mode 100644 tests/urls_without_i18n_patterns.py diff --git a/tests/settings.py b/tests/settings.py index fd899aa..e4e6ad4 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- +from __future__ import unicode_literals + import django import os @@ -91,6 +93,15 @@ DATABASES = { 'default': database_config.get(database_engine), } +USE_I18N = True +LANGUAGES = ( + ('en', 'English', ), + ('it', 'Italian', ), +) +LANGUAGE_CODE = 'en' + +ROOT_URLCONF = 'tests.urls' + MEDIA_ROOT = os.path.join(BASE_DIR, 'admin_interface/public/media/') MEDIA_URL = '/media/' diff --git a/tests/test_fixtures.py b/tests/test_fixtures.py index c357fee..5c6233c 100644 --- a/tests/test_fixtures.py +++ b/tests/test_fixtures.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- +from __future__ import unicode_literals + from django.core.management import call_command from django.test import TestCase diff --git a/tests/test_models.py b/tests/test_models.py index fd3a79f..35b7155 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- +from __future__ import unicode_literals + from django.conf import settings from django.test import TestCase diff --git a/tests/test_settings.py b/tests/test_settings.py index 1396afc..3e92bd3 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- +from __future__ import unicode_literals + import django from django.conf import settings from django.core.exceptions import ImproperlyConfigured diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py index d54708a..f54aada 100644 --- a/tests/test_templatetags.py +++ b/tests/test_templatetags.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- -from django.test import TestCase +from __future__ import unicode_literals + +from django.test import override_settings, TestCase from django.test.client import RequestFactory from django.template import Context, Template @@ -20,6 +22,63 @@ class AdminInterfaceTemplateTagsTestCase(TestCase): def __render_template(self, string, context=None): return Template(string).render(Context(context or {})) + def test_get_admin_interface_languages(self): + context = Context({ + 'request': self.request_factory.get('/en/admin/'), + }) + languages = templatetags.get_admin_interface_languages(context) + expected_languages = [ + {'code': 'en', 'name': 'English', 'default': True, 'active': True, 'activation_url': '/i18n/setlang/?next=/en/admin/'}, + {'code': 'it', 'name': 'Italian', 'default': False, 'active': False, 'activation_url': '/i18n/setlang/?next=/it/admin/'} + ] + self.assertEqual(len(languages), len(expected_languages)) + self.assertEqual(languages[0], expected_languages[0]) + self.assertEqual(languages[1], expected_languages[1]) + + @override_settings( + USE_I18N = False, + ) + def test_get_admin_interface_languages_with_i18n_disabled(self): + context = Context({ + 'request': self.request_factory.get('/en/admin/'), + }) + languages = templatetags.get_admin_interface_languages(context) + self.assertEqual(languages, None) + + @override_settings( + ROOT_URLCONF = 'tests.urls_without_i18n_patterns', + ) + def test_get_admin_interface_languages_without_i18n_url_patterns(self): + context = Context({ + 'request': self.request_factory.get('/en/admin/'), + }) + languages = templatetags.get_admin_interface_languages(context) + self.assertEqual(languages, None) + + @override_settings( + LANGUAGES = ( + ('en', 'English'), + ), + ) + def test_get_admin_interface_languages_without_multiple_languages(self): + context = Context({ + 'request': self.request_factory.get('/en/admin/'), + }) + languages = templatetags.get_admin_interface_languages(context) + self.assertEqual(languages, None) + + def test_get_admin_interface_languages_without_request(self): + context = Context({}) + languages = templatetags.get_admin_interface_languages(context) + self.assertEqual(languages, None) + + def test_get_admin_interface_languages_without_language_prefix_in_url(self): + context = Context({ + 'request': self.request_factory.get('/admin/'), + }) + languages = templatetags.get_admin_interface_languages(context) + self.assertEqual(languages, None) + def test_get_theme(self): Theme.objects.all().delete() context = Context({}) diff --git a/tests/urls.py b/tests/urls.py new file mode 100644 index 0000000..f4c3ad8 --- /dev/null +++ b/tests/urls.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +import django +from django.contrib import admin +if django.VERSION < (2, 0): + from django.conf.urls import include, url as re_path +else: + from django.urls import include, re_path +from django.conf.urls.i18n import i18n_patterns + + +urlpatterns = [] +urlpatterns += [ + re_path(r'^i18n/', include('django.conf.urls.i18n')), +] +urlpatterns += i18n_patterns( + re_path(r'^admin/', admin.site.urls), +) diff --git a/tests/urls_without_i18n_patterns.py b/tests/urls_without_i18n_patterns.py new file mode 100644 index 0000000..2b10eac --- /dev/null +++ b/tests/urls_without_i18n_patterns.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +import django +from django.contrib import admin +if django.VERSION < (2, 0): + from django.conf.urls import url as re_path +else: + from django.urls import re_path + + +urlpatterns = [ + re_path(r'^admin/', admin.site.urls), +]