Unify the creation of the test config file

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-12-10 19:26:05 -04:00
parent 51b400ed30
commit 9e9db800ad
4 changed files with 85 additions and 92 deletions

View File

@@ -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)
==================

View File

@@ -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(

View File

@@ -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
)

View File

@@ -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'