117 lines
4.0 KiB
Python
117 lines
4.0 KiB
Python
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 mayan.apps.common.mixins import EnvironmentTestCaseMixin
|
|
from mayan.apps.common.settings import setting_paginate_by
|
|
from mayan.apps.common.tests.base import BaseTestCase
|
|
from mayan.apps.storage.utils import fs_cleanup, NamedTemporaryFile
|
|
|
|
from ..classes import Setting
|
|
|
|
from .literals import (
|
|
ENVIRONMENT_TEST_NAME, ENVIRONMENT_TEST_VALUE, TEST_SETTING_GLOBAL_NAME,
|
|
TEST_SETTING_INITIAL_VALUE, TEST_SETTING_VALUE
|
|
)
|
|
from .mixins import SmartSettingTestMixin
|
|
from .mocks import TestNamespaceMigrationOne, TestNamespaceMigrationTwo
|
|
|
|
|
|
class ClassesTestCase(EnvironmentTestCaseMixin, SmartSettingTestMixin, BaseTestCase):
|
|
def test_environment_variable(self):
|
|
self._set_environment_variable(
|
|
name='MAYAN_{}'.format(ENVIRONMENT_TEST_NAME),
|
|
value=ENVIRONMENT_TEST_VALUE
|
|
)
|
|
|
|
self.assertTrue(setting_paginate_by.value, ENVIRONMENT_TEST_VALUE)
|
|
|
|
def test_config_backup_creation(self):
|
|
path_config_backup = Path(settings.CONFIGURATION_LAST_GOOD_FILEPATH)
|
|
fs_cleanup(filename=force_text(path_config_backup))
|
|
|
|
Setting.save_last_known_good()
|
|
self.assertTrue(path_config_backup.exists())
|
|
|
|
def test_config_backup_creation_no_tags(self):
|
|
path_config_backup = Path(settings.CONFIGURATION_LAST_GOOD_FILEPATH)
|
|
fs_cleanup(filename=force_text(path_config_backup))
|
|
|
|
Setting.save_last_known_good()
|
|
self.assertTrue(path_config_backup.exists())
|
|
|
|
with path_config_backup.open(mode='r') as file_object:
|
|
self.assertFalse('!!python/' in file_object.read())
|
|
|
|
def test_setting_check_changed(self):
|
|
self._create_test_settings_namespace()
|
|
test_setting = self.test_settings_namespace.add_setting(
|
|
global_name='SMART_SETTINGS_TEST_SETTING',
|
|
default='test value'
|
|
)
|
|
# Initialize hash cache
|
|
Setting._cache_hash = None
|
|
Setting.check_changed()
|
|
self.assertFalse(Setting.check_changed())
|
|
test_setting.value = 'test value edited'
|
|
self.assertTrue(Setting.check_changed())
|
|
|
|
|
|
class NamespaceMigrationTestCase(
|
|
EnvironmentTestCaseMixin, SmartSettingTestMixin, BaseTestCase
|
|
):
|
|
def test_environment_migration(self):
|
|
self._set_environment_variable(
|
|
name='MAYAN_{}'.format(TEST_SETTING_GLOBAL_NAME),
|
|
value=TEST_SETTING_INITIAL_VALUE
|
|
)
|
|
self._create_test_settings_namespace(
|
|
migration_class=TestNamespaceMigrationOne, version='0002'
|
|
)
|
|
self._create_test_setting()
|
|
|
|
self.assertEqual(
|
|
self.test_setting.value, TEST_SETTING_INITIAL_VALUE
|
|
)
|
|
|
|
def test_migration_0001_to_0002(self):
|
|
self._create_test_settings_namespace(
|
|
migration_class=TestNamespaceMigrationTwo, version='0002'
|
|
)
|
|
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)
|
|
|
|
self.assertEqual(
|
|
self.test_setting.value, '{}_0001'.format(TEST_SETTING_VALUE)
|
|
)
|
|
|
|
def test_migration_0001_to_0003(self):
|
|
self._create_test_settings_namespace(
|
|
migration_class=TestNamespaceMigrationTwo, version='0003'
|
|
)
|
|
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)
|
|
|
|
self.assertEqual(
|
|
self.test_setting.value, '{}_0001_0002'.format(TEST_SETTING_VALUE)
|
|
)
|