Unify the creation of the test config file
Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
- Pin kombu to version 4.6.7. GitLab issue #699. Thanks to
|
||||
Rob de Canha-Knight (@rssfed23) for the report and the research.
|
||||
- Update instances of the word "weblink" to "web link".
|
||||
- Unify the creation of the temporary config file used in tests.
|
||||
|
||||
3.3.4 (2019-12-09)
|
||||
==================
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.encoding import force_bytes
|
||||
|
||||
from mayan.apps.storage.utils import NamedTemporaryFile
|
||||
from mayan.apps.storage.utils import fs_cleanup, NamedTemporaryFile
|
||||
|
||||
from ..classes import Namespace
|
||||
from ..classes import Namespace, Setting
|
||||
from ..utils import BaseSetting, SettingNamespaceSingleton
|
||||
|
||||
from .literals import (
|
||||
@@ -17,28 +18,10 @@ class BoostrapSettingTestMixin(object):
|
||||
def _create_test_bootstrap_singleton(self):
|
||||
self.test_globals = {}
|
||||
self.test_globals['BASE_DIR'] = ''
|
||||
self.setting_namespace = SettingNamespaceSingleton(
|
||||
self.test_setting_namespace_singleton = SettingNamespaceSingleton(
|
||||
global_symbol_table=self.test_globals
|
||||
)
|
||||
|
||||
def _create_test_config_file(self, value):
|
||||
with NamedTemporaryFile() as file_object:
|
||||
self._set_environment_variable(
|
||||
name='MAYAN_CONFIGURATION_FILEPATH',
|
||||
value=file_object.name
|
||||
)
|
||||
|
||||
file_object.write(
|
||||
force_bytes(
|
||||
'{}: {}'.format(
|
||||
TEST_BOOTSTAP_SETTING_NAME, value
|
||||
)
|
||||
)
|
||||
)
|
||||
file_object.seek(0)
|
||||
|
||||
self.setting_namespace.update_globals()
|
||||
|
||||
def _register_test_boostrap_setting(self):
|
||||
SettingNamespaceSingleton.register_setting(
|
||||
name=TEST_BOOTSTAP_SETTING_NAME, klass=BaseSetting, kwargs={
|
||||
@@ -54,6 +37,43 @@ class SmartSettingsTestCaseMixin(object):
|
||||
|
||||
|
||||
class SmartSettingTestMixin(object):
|
||||
test_setting_global_name = None
|
||||
test_config_file_object = None
|
||||
|
||||
def tearDown(self):
|
||||
if self.test_config_file_object:
|
||||
fs_cleanup(filename=self.test_config_file_object.name)
|
||||
super(SmartSettingTestMixin, self).tearDown()
|
||||
|
||||
def _create_test_config_file(self, callback=None):
|
||||
if not self.test_setting_global_name:
|
||||
self.test_setting_global_name = self.test_setting.global_name
|
||||
|
||||
test_config_entry = {
|
||||
self.test_setting_global_name: self.test_config_value
|
||||
}
|
||||
|
||||
with NamedTemporaryFile(delete=False) as test_config_file_object:
|
||||
# Needed to load the config file from the Setting class
|
||||
# after bootstrap.
|
||||
settings.CONFIGURATION_FILEPATH = test_config_file_object.name
|
||||
# Needed to update the globals before Mayan has loaded.
|
||||
self._set_environment_variable(
|
||||
name='MAYAN_CONFIGURATION_FILEPATH',
|
||||
value=test_config_file_object.name
|
||||
)
|
||||
|
||||
test_config_file_object.write(
|
||||
force_bytes(
|
||||
Setting.serialize_value(value=test_config_entry)
|
||||
)
|
||||
)
|
||||
test_config_file_object.seek(0)
|
||||
Setting._config_file_cache = None
|
||||
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
def _create_test_settings_namespace(self, **kwargs):
|
||||
try:
|
||||
self.test_settings_namespace = Namespace.get(
|
||||
|
||||
@@ -3,12 +3,12 @@ from __future__ import absolute_import, unicode_literals
|
||||
from pathlib2 import Path
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.encoding import force_bytes, force_text
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
from mayan.apps.common.settings import setting_paginate_by
|
||||
from mayan.apps.common.tests.base import BaseTestCase
|
||||
from mayan.apps.common.tests.mixins import EnvironmentTestCaseMixin
|
||||
from mayan.apps.storage.utils import fs_cleanup, NamedTemporaryFile
|
||||
from mayan.apps.storage.utils import fs_cleanup
|
||||
|
||||
from ..classes import Setting
|
||||
|
||||
@@ -34,25 +34,16 @@ class ClassesTestCase(
|
||||
self._create_test_setting()
|
||||
|
||||
self._set_environment_variable(
|
||||
name='MAYAN_{}'.format(TEST_SETTING_GLOBAL_NAME),
|
||||
name='MAYAN_{}'.format(self.test_setting.global_name),
|
||||
value=test_environment_value
|
||||
)
|
||||
|
||||
with NamedTemporaryFile() as file_object:
|
||||
settings.CONFIGURATION_FILEPATH = file_object.name
|
||||
file_object.write(
|
||||
force_bytes(
|
||||
'{}: {}'.format(
|
||||
TEST_SETTING_GLOBAL_NAME, test_file_value
|
||||
)
|
||||
)
|
||||
)
|
||||
file_object.seek(0)
|
||||
Setting._config_file_cache = None
|
||||
self.test_config_value = test_file_value
|
||||
self._create_test_config_file()
|
||||
|
||||
self.assertEqual(
|
||||
self.test_setting.value, test_environment_value
|
||||
)
|
||||
self.assertEqual(
|
||||
self.test_setting.value, test_environment_value
|
||||
)
|
||||
|
||||
def test_environment_variable(self):
|
||||
self._set_environment_variable(
|
||||
@@ -116,19 +107,12 @@ class NamespaceMigrationTestCase(
|
||||
)
|
||||
self._create_test_setting()
|
||||
|
||||
with NamedTemporaryFile() as file_object:
|
||||
settings.CONFIGURATION_FILEPATH = file_object.name
|
||||
file_object.write(
|
||||
force_bytes(
|
||||
'{}: {}'.format(TEST_SETTING_GLOBAL_NAME, TEST_SETTING_VALUE)
|
||||
)
|
||||
)
|
||||
file_object.seek(0)
|
||||
Setting._config_file_cache = None
|
||||
self.test_config_value = TEST_SETTING_VALUE
|
||||
self._create_test_config_file()
|
||||
|
||||
self.assertEqual(
|
||||
self.test_setting.value, '{}_0001'.format(TEST_SETTING_VALUE)
|
||||
)
|
||||
self.assertEqual(
|
||||
self.test_setting.value, '{}_0001'.format(TEST_SETTING_VALUE)
|
||||
)
|
||||
|
||||
def test_migration_0001_to_0003(self):
|
||||
self._create_test_settings_namespace(
|
||||
@@ -136,19 +120,12 @@ class NamespaceMigrationTestCase(
|
||||
)
|
||||
self._create_test_setting()
|
||||
|
||||
with NamedTemporaryFile() as file_object:
|
||||
settings.CONFIGURATION_FILEPATH = file_object.name
|
||||
file_object.write(
|
||||
force_bytes(
|
||||
'{}: {}'.format(TEST_SETTING_GLOBAL_NAME, TEST_SETTING_VALUE)
|
||||
)
|
||||
)
|
||||
file_object.seek(0)
|
||||
Setting._config_file_cache = None
|
||||
self.test_config_value = TEST_SETTING_VALUE
|
||||
self._create_test_config_file()
|
||||
|
||||
self.assertEqual(
|
||||
self.test_setting.value, '{}_0001_0002'.format(TEST_SETTING_VALUE)
|
||||
)
|
||||
self.assertEqual(
|
||||
self.test_setting.value, '{}_0001_0002'.format(TEST_SETTING_VALUE)
|
||||
)
|
||||
|
||||
def test_migration_invalid(self):
|
||||
self._create_test_settings_namespace(
|
||||
@@ -156,19 +133,12 @@ class NamespaceMigrationTestCase(
|
||||
)
|
||||
self._create_test_setting()
|
||||
|
||||
with NamedTemporaryFile() as file_object:
|
||||
settings.CONFIGURATION_FILEPATH = file_object.name
|
||||
file_object.write(
|
||||
force_bytes(
|
||||
'{}: {}'.format(TEST_SETTING_GLOBAL_NAME, TEST_SETTING_VALUE)
|
||||
)
|
||||
)
|
||||
file_object.seek(0)
|
||||
Setting._config_file_cache = None
|
||||
self.test_config_value = TEST_SETTING_VALUE
|
||||
self._create_test_config_file()
|
||||
|
||||
self.assertEqual(
|
||||
self.test_setting.value, TEST_SETTING_VALUE
|
||||
)
|
||||
self.assertEqual(
|
||||
self.test_setting.value, TEST_SETTING_VALUE
|
||||
)
|
||||
|
||||
def test_migration_invalid_dual(self):
|
||||
self._create_test_settings_namespace(
|
||||
@@ -176,16 +146,9 @@ class NamespaceMigrationTestCase(
|
||||
)
|
||||
self._create_test_setting()
|
||||
|
||||
with NamedTemporaryFile() as file_object:
|
||||
settings.CONFIGURATION_FILEPATH = file_object.name
|
||||
file_object.write(
|
||||
force_bytes(
|
||||
'{}: {}'.format(TEST_SETTING_GLOBAL_NAME, TEST_SETTING_VALUE)
|
||||
)
|
||||
)
|
||||
file_object.seek(0)
|
||||
Setting._config_file_cache = None
|
||||
self.test_config_value = TEST_SETTING_VALUE
|
||||
self._create_test_config_file()
|
||||
|
||||
self.assertEqual(
|
||||
self.test_setting.value, TEST_SETTING_VALUE
|
||||
)
|
||||
self.assertEqual(
|
||||
self.test_setting.value, TEST_SETTING_VALUE
|
||||
)
|
||||
|
||||
@@ -7,11 +7,12 @@ from .literals import (
|
||||
TEST_BOOTSTAP_SETTING_NAME, TEST_SETTING_VALUE,
|
||||
TEST_SETTING_VALUE_OVERRIDE
|
||||
)
|
||||
from .mixins import BoostrapSettingTestMixin
|
||||
from .mixins import BoostrapSettingTestMixin, SmartSettingTestMixin
|
||||
|
||||
|
||||
class BoostrapSettingTestCase(
|
||||
BoostrapSettingTestMixin, EnvironmentTestCaseMixin, BaseTestCase
|
||||
BoostrapSettingTestMixin, EnvironmentTestCaseMixin,
|
||||
SmartSettingTestMixin, BaseTestCase
|
||||
):
|
||||
def setUp(self):
|
||||
super(BoostrapSettingTestCase, self).setUp()
|
||||
@@ -24,7 +25,11 @@ class BoostrapSettingTestCase(
|
||||
value=TEST_SETTING_VALUE_OVERRIDE
|
||||
)
|
||||
|
||||
self._create_test_config_file(value=TEST_SETTING_VALUE)
|
||||
self.test_setting_global_name = TEST_BOOTSTAP_SETTING_NAME
|
||||
self.test_config_value = TEST_SETTING_VALUE
|
||||
self._create_test_config_file(
|
||||
callback=self.test_setting_namespace_singleton.update_globals
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
self.test_globals[TEST_BOOTSTAP_SETTING_NAME],
|
||||
@@ -34,7 +39,11 @@ class BoostrapSettingTestCase(
|
||||
def test_bootstrap_config_overrides_settings(self):
|
||||
self.test_globals[TEST_BOOTSTAP_SETTING_NAME] = TEST_SETTING_VALUE
|
||||
|
||||
self._create_test_config_file(value=TEST_SETTING_VALUE_OVERRIDE)
|
||||
self.test_setting_global_name = TEST_BOOTSTAP_SETTING_NAME
|
||||
self.test_config_value = TEST_SETTING_VALUE_OVERRIDE
|
||||
self._create_test_config_file(
|
||||
callback=self.test_setting_namespace_singleton.update_globals
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
self.test_globals[TEST_BOOTSTAP_SETTING_NAME],
|
||||
@@ -46,7 +55,7 @@ class BoostrapSettingTestCase(
|
||||
TEST_BOOTSTAP_SETTING_NAME
|
||||
] = TEST_SETTING_VALUE_OVERRIDE
|
||||
|
||||
self.setting_namespace.update_globals()
|
||||
self.test_setting_namespace_singleton.update_globals()
|
||||
|
||||
self.assertEqual(
|
||||
self.test_globals[TEST_BOOTSTAP_SETTING_NAME],
|
||||
@@ -54,7 +63,7 @@ class BoostrapSettingTestCase(
|
||||
)
|
||||
|
||||
def test_bootstrap_default(self):
|
||||
self.setting_namespace.update_globals()
|
||||
self.test_setting_namespace_singleton.update_globals()
|
||||
|
||||
self.assertEqual(
|
||||
self.test_globals[TEST_BOOTSTAP_SETTING_NAME], 'value default'
|
||||
|
||||
Reference in New Issue
Block a user