Improved tests for app settings and added tests for dav_base.config.modules.ModuleMeta
Run tests / Execute tox to run the test suite (push) Successful in 3m27s
Run tests / Execute tox to run the test suite (push) Successful in 3m27s
This commit is contained in:
@@ -8,6 +8,6 @@ class TestCase(AppsTestCase):
|
||||
app_config = apps.get_app_config('dav_auth')
|
||||
|
||||
settings = (
|
||||
AppSetting('login_redirect_url', string_types),
|
||||
AppSetting('logout_redirect_url', string_types),
|
||||
AppSetting('login_redirect_url', 'root', string_types),
|
||||
AppSetting('logout_redirect_url', 'root', string_types),
|
||||
)
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"url_prefix": "test",
|
||||
"app_config": ".apps.AppConfig"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
from django.urls import re_path
|
||||
from django.views import generic
|
||||
|
||||
app_name = 'fake_app'
|
||||
|
||||
urlpatterns = [
|
||||
re_path(r'^$', generic.TemplateView.as_view(), name='root'),
|
||||
]
|
||||
@@ -12,10 +12,13 @@ from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as ExpectedConditions
|
||||
|
||||
from ..config.apps import DefaultSetting
|
||||
|
||||
|
||||
class AppSetting: # pylint: disable=too-few-public-methods
|
||||
def __init__(self, name, of=None):
|
||||
def __init__(self, name, default, of=None):
|
||||
self.name = name
|
||||
self.default = default
|
||||
self.of = of
|
||||
|
||||
|
||||
@@ -26,16 +29,29 @@ class AppsTestCase(SimpleTestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
if self.app_config:
|
||||
self.default_settings = self.app_config.default_settings
|
||||
self.configured_settings = self.app_config.settings
|
||||
else:
|
||||
self.default_settings = ()
|
||||
self.configured_settings = None
|
||||
|
||||
def test_settings(self):
|
||||
config = self.configured_settings
|
||||
def test_defaults(self):
|
||||
defaults = {}
|
||||
for d in self.default_settings:
|
||||
self.assertIsInstance(d, DefaultSetting)
|
||||
defaults[d.name] = d.value
|
||||
|
||||
for setting in self.settings:
|
||||
name = setting.name
|
||||
self.assertTrue(hasattr(config, name), 'Settings do not contain {}'.format(name))
|
||||
value = getattr(config, name)
|
||||
self.assertIn(name, defaults.keys())
|
||||
self.assertEqual(defaults[name], setting.default, 'Default value of {} is not correct'.format(name))
|
||||
|
||||
def test_configured_settings(self):
|
||||
for setting in self.settings:
|
||||
name = setting.name
|
||||
self.assertTrue(hasattr(self.configured_settings, name), 'Settings do not contain {}'.format(name))
|
||||
|
||||
value = getattr(self.configured_settings, name)
|
||||
of = setting.of
|
||||
if of is not None:
|
||||
self.assertIsInstance(value, of)
|
||||
|
||||
@@ -8,7 +8,7 @@ class TestCase(AppsTestCase):
|
||||
app_config = apps.get_app_config('dav_base')
|
||||
|
||||
settings = (
|
||||
AppSetting('email_sender', string_types),
|
||||
AppSetting('email_base_url', string_types),
|
||||
AppSetting('email_subject_prefix', string_types),
|
||||
AppSetting('email_sender', None, string_types),
|
||||
AppSetting('email_base_url', None, string_types),
|
||||
AppSetting('email_subject_prefix', '', string_types),
|
||||
)
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
from django.apps import apps
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.test import SimpleTestCase
|
||||
from django.urls import URLResolver
|
||||
|
||||
from ..config.apps import DefaultSetting, AppSettings, AppConfig
|
||||
from ..config.modules import ModuleMeta
|
||||
from ..apps import AppConfig as RealAppConfig
|
||||
|
||||
TEST_SETTING_VALUE = 'do not change this value'
|
||||
@@ -172,9 +174,55 @@ class AppConfigTestCase(SimpleTestCase):
|
||||
|
||||
|
||||
class ModuleMetaTestCase(SimpleTestCase):
|
||||
def test_some(self):
|
||||
# TODO
|
||||
pass
|
||||
def test_init(self):
|
||||
mm = ModuleMeta('dav_base.tests.fake_app1')
|
||||
self.assertEqual(mm.package, 'dav_base.tests.fake_app1')
|
||||
self.assertEqual(mm.app, 'dav_base.tests.fake_app1.apps.AppConfig')
|
||||
self.assertEqual(mm.additional_apps, [])
|
||||
self.assertEqual(mm.url_prefix, 'test')
|
||||
self.assertEqual(mm.url_namespace, 'dav_base_tests_fake_app1')
|
||||
pattern = mm.url_conf_pattern
|
||||
self.assertIsInstance(pattern, URLResolver)
|
||||
self.assertEqual('^test/', str(pattern.pattern))
|
||||
|
||||
def test_cannot_include_urls(self):
|
||||
mm = ModuleMeta('dav_base.tests.fake_app1')
|
||||
dd = {'package': 'dav_base'}
|
||||
mm.load_from_dict(dd)
|
||||
with self.assertRaises(ImproperlyConfigured):
|
||||
_ = mm.url_conf_pattern
|
||||
|
||||
def test_load_from_dict(self):
|
||||
mm = ModuleMeta('dav_base.tests.fake_app1')
|
||||
dd = {'package': 'dav_base2.foo',
|
||||
'app_config': 'MyApp.MyAppConfig',
|
||||
'additional_apps': ['test1', 'test2.subtest'],
|
||||
'url_prefix': 'test_url_prefix',
|
||||
}
|
||||
mm.load_from_dict(dd)
|
||||
self.assertEqual(mm.package, dd['package'])
|
||||
self.assertEqual(mm.app, dd['app_config'])
|
||||
self.assertEqual(mm.additional_apps, dd['additional_apps'])
|
||||
self.assertEqual(mm.url_prefix, dd['url_prefix'])
|
||||
self.assertEqual(mm.url_namespace, dd['package'].replace('.', '_'))
|
||||
|
||||
dd = {'package': 'dav_base2.bar'}
|
||||
mm.load_from_dict(dd)
|
||||
self.assertEqual(mm.url_prefix, dd['package'])
|
||||
self.assertEqual(mm.app, dd['package'])
|
||||
self.assertEqual(mm.additional_apps, [])
|
||||
self.assertEqual(mm.url_prefix, dd['package'])
|
||||
|
||||
def test_dump_as_dict(self):
|
||||
mm = ModuleMeta('dav_base.tests.fake_app1')
|
||||
dd_in = {'package': 'dav_base2.foo',
|
||||
'app_config': '.mymod.MyAppConfig',
|
||||
'additional_apps': ['test1'],
|
||||
'url_prefix': 'test_url_prefix',
|
||||
}
|
||||
mm.load_from_dict(dd_in)
|
||||
dd_out = mm.dump_as_dict()
|
||||
self.assertEqual(dd_in, dd_out)
|
||||
|
||||
|
||||
class ModuleConfigTestCase(SimpleTestCase):
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from django.apps import apps
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
||||
from dav_base.tests.generic import AppSetting, AppsTestCase
|
||||
|
||||
@@ -7,22 +8,22 @@ class TestCase(AppsTestCase):
|
||||
app_config = apps.get_app_config('dav_events')
|
||||
|
||||
settings = (
|
||||
AppSetting('enable_email_on_status_update', bool),
|
||||
AppSetting('enable_email_on_update', bool),
|
||||
AppSetting('enable_email_on_registration_closed', bool),
|
||||
AppSetting('groups_manager_super', list),
|
||||
AppSetting('groups_manager_w', list),
|
||||
AppSetting('groups_manager_s', list),
|
||||
AppSetting('groups_manager_m', list),
|
||||
AppSetting('groups_manager_k', list),
|
||||
AppSetting('groups_manager_b', list),
|
||||
AppSetting('groups_publisher_print', list),
|
||||
AppSetting('groups_publisher_web', list),
|
||||
AppSetting('groups_publisher_facebook', list),
|
||||
AppSetting('forms_development_init', bool),
|
||||
AppSetting('form_initials', dict),
|
||||
AppSetting('matrix_config', dict),
|
||||
AppSetting('publish_before_begin_days', int),
|
||||
AppSetting('publish_before_deadline_days', int),
|
||||
AppSetting('publish_issues', list),
|
||||
AppSetting('enable_email_on_status_update', False, bool),
|
||||
AppSetting('enable_email_on_update', False, bool),
|
||||
AppSetting('enable_email_on_registration_closed', False, bool),
|
||||
AppSetting('groups_manager_super', [], list),
|
||||
AppSetting('groups_manager_w', [], list),
|
||||
AppSetting('groups_manager_s', [], list),
|
||||
AppSetting('groups_manager_m', [], list),
|
||||
AppSetting('groups_manager_k', [], list),
|
||||
AppSetting('groups_manager_b', [], list),
|
||||
AppSetting('groups_publisher_print', [], list),
|
||||
AppSetting('groups_publisher_web', [], list),
|
||||
AppSetting('groups_publisher_facebook', [], list),
|
||||
AppSetting('forms_development_init', False, bool),
|
||||
AppSetting('form_initials', {}, dict),
|
||||
AppSetting('matrix_config', ImproperlyConfigured, dict),
|
||||
AppSetting('publish_before_begin_days', 10, int),
|
||||
AppSetting('publish_before_deadline_days', 7, int),
|
||||
AppSetting('publish_issues', [], list),
|
||||
)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from django.apps import apps
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from six import string_types
|
||||
|
||||
from dav_base.tests.generic import AppSetting, AppsTestCase
|
||||
@@ -8,5 +9,5 @@ class TestCase(AppsTestCase):
|
||||
app_config = apps.get_app_config('dav_registration')
|
||||
|
||||
settings = (
|
||||
AppSetting('privacy_policy', string_types),
|
||||
AppSetting('privacy_policy', ImproperlyConfigured, string_types),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user