155 lines
5.2 KiB
Python
155 lines
5.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
from django.apps import apps
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
from django.test import SimpleTestCase
|
|
|
|
from ..config.apps import DefaultSetting, AppSettings, AppConfig
|
|
from ..apps import AppConfig as RealAppConfig
|
|
|
|
TEST_SETTING_VALUE = 'do not change this value'
|
|
|
|
|
|
class DefaultSettingTestCase(SimpleTestCase):
|
|
def test_key_name(self):
|
|
name = 'somename'
|
|
key_name = 'SoMeKeY'
|
|
|
|
setting = DefaultSetting(name, None)
|
|
self.assertEqual(setting.key_name, name.upper())
|
|
|
|
setting = DefaultSetting(name, None, key_name=key_name)
|
|
self.assertEqual(setting.key_name, key_name)
|
|
|
|
def test_validate(self):
|
|
name = 'somename'
|
|
|
|
setting = DefaultSetting(name, None, validator=None)
|
|
try:
|
|
setting.validate(False)
|
|
except ImproperlyConfigured:
|
|
self.fail('Disabled validation validated invalid :(')
|
|
|
|
def callable_validator(value):
|
|
return (value % 2) == 0
|
|
|
|
valid_values = (2, 4)
|
|
invalid_values = (3, 5)
|
|
|
|
setting = DefaultSetting(name, None, validator=callable_validator)
|
|
for val in valid_values:
|
|
try:
|
|
setting.validate(val)
|
|
except ImproperlyConfigured:
|
|
self.fail('Callable validated valid value invalid :(')
|
|
|
|
for val in invalid_values:
|
|
with self.assertRaises(ImproperlyConfigured):
|
|
setting.validate(val)
|
|
|
|
re_validator = r'[a-z]'
|
|
|
|
valid_values = u'aocd'
|
|
invalid_values = u'Aö1.'
|
|
|
|
setting = DefaultSetting(name, None, validator=re_validator)
|
|
for val in valid_values:
|
|
try:
|
|
setting.validate(val)
|
|
except ImproperlyConfigured:
|
|
self.fail('Regular Expression validated valid value invalid :(')
|
|
|
|
for val in invalid_values:
|
|
with self.assertRaises(ImproperlyConfigured):
|
|
setting.validate(val)
|
|
|
|
|
|
class AppSettingsTestCase(SimpleTestCase):
|
|
def setUp(self):
|
|
self.app_name = 'dav_base'
|
|
self.test_setting_value = TEST_SETTING_VALUE
|
|
|
|
def test_defaults(self):
|
|
"""Test the default value for optional and unset settings"""
|
|
default_settings = (
|
|
DefaultSetting('no_test_setting', 1),
|
|
DefaultSetting('no_test_setting_2', 2),
|
|
)
|
|
app_settings = AppSettings(self.app_name, default_settings)
|
|
self.assertEqual(app_settings.no_test_setting, 1)
|
|
self.assertEqual(app_settings.no_test_setting_2, 2)
|
|
|
|
def test_improperlyconfigured(self):
|
|
"""Test if mandatory but unset setting raise correct exception"""
|
|
default_settings = (
|
|
DefaultSetting('no_test_setting', ImproperlyConfigured),
|
|
)
|
|
try:
|
|
app_settings = AppSettings(self.app_name, default_settings)
|
|
except ImproperlyConfigured as e:
|
|
self.assertEqual(str(e), 'NO_TEST_SETTING must be defined in main.settings-dav_base')
|
|
|
|
def test_settings_from_file(self):
|
|
"""Test if value from settings file eliminate exception"""
|
|
default_settings = (
|
|
DefaultSetting('test_setting', ImproperlyConfigured),
|
|
)
|
|
app_settings = AppSettings(self.app_name, default_settings)
|
|
self.assertEqual(app_settings.test_setting, self.test_setting_value)
|
|
|
|
# Test if value from settings file overwrites default value
|
|
default_settings = (
|
|
DefaultSetting('test_setting', 1),
|
|
)
|
|
app_settings = AppSettings(self.app_name, default_settings)
|
|
self.assertEqual(app_settings.test_setting, self.test_setting_value)
|
|
|
|
def test_key_name(self):
|
|
default_settings = (
|
|
DefaultSetting('test_setting', 1, key_name='NO_TEST_SETTING'),
|
|
DefaultSetting('no_test_setting', ImproperlyConfigured, key_name='TEST_SETTING'),
|
|
)
|
|
app_settings = AppSettings(self.app_name, default_settings)
|
|
self.assertEqual(app_settings.test_setting, 1)
|
|
self.assertEqual(app_settings.no_test_setting, self.test_setting_value)
|
|
|
|
|
|
class AppConfigTestCase(SimpleTestCase):
|
|
def test_init(self):
|
|
app_name = 'dav_base'
|
|
import dav_base as app_module
|
|
|
|
test_default_settings = (
|
|
DefaultSetting('test_setting', ImproperlyConfigured),
|
|
DefaultSetting('no_test_setting', 1),
|
|
)
|
|
|
|
class TestAppConfig(AppConfig):
|
|
name = 'not_dav_base'
|
|
verbose_name = u'DAV Base App'
|
|
default_settings = test_default_settings
|
|
|
|
app_config = TestAppConfig(app_name, app_module)
|
|
app_settings = app_config.settings
|
|
|
|
self.assertEqual(app_config.name, app_name)
|
|
self.assertEqual(app_settings.test_setting, TEST_SETTING_VALUE)
|
|
self.assertEqual(app_settings.no_test_setting, 1)
|
|
|
|
def test_integrated(self):
|
|
app_config = apps.get_containing_app_config(__package__)
|
|
self.assertEqual(app_config.__class__, RealAppConfig)
|
|
self.assertIsInstance(app_config, AppConfig)
|
|
self.assertEqual(app_config.settings.__class__, AppSettings)
|
|
|
|
|
|
class ModuleMetaTestCase(SimpleTestCase):
|
|
def test_some(self):
|
|
# TODO
|
|
pass
|
|
|
|
|
|
class ModuleConfigTestCase(SimpleTestCase):
|
|
def test_some(self):
|
|
# TODO
|
|
pass
|