UPD: dav_base: tests!

This commit is contained in:
2019-03-12 18:13:19 +01:00
parent c38cc0d6e5
commit b246a785b7
11 changed files with 432 additions and 45 deletions

View File

@@ -0,0 +1,154 @@
# -*- 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