Improved testing
This commit is contained in:
parent
fea84418d3
commit
16516b7fe6
@ -7,6 +7,7 @@ from sh_edraft.configuration.base.configuration_base import ConfigurationBase
|
|||||||
from sh_edraft.configuration.model.configuration_variable_name import ConfigurationVariableName
|
from sh_edraft.configuration.model.configuration_variable_name import ConfigurationVariableName
|
||||||
from sh_edraft.environment.base.environment_base import EnvironmentBase
|
from sh_edraft.environment.base.environment_base import EnvironmentBase
|
||||||
from sh_edraft.environment.hosting_environment import HostingEnvironment
|
from sh_edraft.environment.hosting_environment import HostingEnvironment
|
||||||
|
from sh_edraft.environment.model import EnvironmentName
|
||||||
from sh_edraft.utils import Console
|
from sh_edraft.utils import Console
|
||||||
|
|
||||||
|
|
||||||
@ -36,7 +37,7 @@ class Configuration(ConfigurationBase):
|
|||||||
|
|
||||||
def _set_variable(self, name: str, value: str):
|
def _set_variable(self, name: str, value: str):
|
||||||
if name == ConfigurationVariableName.environment.value:
|
if name == ConfigurationVariableName.environment.value:
|
||||||
self._hosting_environment.environment_name = value
|
self._hosting_environment.environment_name = EnvironmentName(value)
|
||||||
|
|
||||||
elif name == ConfigurationVariableName.name.value:
|
elif name == ConfigurationVariableName.name.value:
|
||||||
self._hosting_environment.application_name = value
|
self._hosting_environment.application_name = value
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
from sh_edraft.environment.model.environment_name import EnvironmentName
|
|
||||||
|
|
||||||
|
|
||||||
class EnvironmentBase(ABC):
|
class EnvironmentBase(ABC):
|
||||||
|
|
||||||
@ -10,11 +8,11 @@ class EnvironmentBase(ABC):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def environment_name(self) -> EnvironmentName: pass
|
def environment_name(self) -> str: pass
|
||||||
|
|
||||||
@environment_name.setter
|
@environment_name.setter
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def environment_name(self, environment_name: EnvironmentName): pass
|
def environment_name(self, environment_name: str): pass
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
@ -16,12 +16,12 @@ class HostingEnvironment(EnvironmentBase):
|
|||||||
self._content_root_path: Optional[str] = crp
|
self._content_root_path: Optional[str] = crp
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def environment_name(self) -> EnvironmentName:
|
def environment_name(self) -> str:
|
||||||
return self._environment_name
|
return str(self._environment_name.value)
|
||||||
|
|
||||||
@environment_name.setter
|
@environment_name.setter
|
||||||
def environment_name(self, environment_name: EnvironmentName):
|
def environment_name(self, environment_name: str):
|
||||||
self._environment_name = environment_name
|
self._environment_name = EnvironmentName(environment_name)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def application_name(self) -> str:
|
def application_name(self) -> str:
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import sys
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from sh_edraft.configuration.configuration import Configuration
|
from sh_edraft.configuration.configuration import Configuration
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
sh_edraft.service
|
sh_edraft.services
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ sh_edraft.service
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__title__ = 'sh_edraft.service'
|
__title__ = 'sh_edraft.services'
|
||||||
__author__ = 'Sven Heidemann'
|
__author__ = 'Sven Heidemann'
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
__copyright__ = 'Copyright (c) 2020 sh-edraft.de'
|
__copyright__ = 'Copyright (c) 2020 sh-edraft.de'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
sh_edraft.service.base
|
sh_edraft.services.base
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ sh_edraft.service.base
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__title__ = 'sh_edraft.service.base'
|
__title__ = 'sh_edraft.services.base'
|
||||||
__author__ = 'Sven Heidemann'
|
__author__ = 'Sven Heidemann'
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
__copyright__ = 'Copyright (c) 2020 sh-edraft.de'
|
__copyright__ = 'Copyright (c) 2020 sh-edraft.de'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
sh_edraft.service.base
|
sh_edraft.services.base
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ sh_edraft.service.base
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__title__ = 'sh_edraft.service.base'
|
__title__ = 'sh_edraft.services.base'
|
||||||
__author__ = 'Sven Heidemann'
|
__author__ = 'Sven Heidemann'
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
__copyright__ = 'Copyright (c) 2020 sh-edraft.de'
|
__copyright__ = 'Copyright (c) 2020 sh-edraft.de'
|
||||||
|
8
src/tests/appsettings.edrafts-pc.json
Normal file
8
src/tests/appsettings.edrafts-pc.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"LoggingSettings": {
|
||||||
|
"Path": "logs/",
|
||||||
|
"Filename": "log_$start_time.log",
|
||||||
|
"ConsoleLogLevel": "TRACE",
|
||||||
|
"FileLogLevel": "TRACE"
|
||||||
|
}
|
||||||
|
}
|
93
src/tests/configuration/config.py
Normal file
93
src/tests/configuration/config.py
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
from typing import cast
|
||||||
|
|
||||||
|
from sh_edraft.configuration import Configuration
|
||||||
|
from sh_edraft.environment.model import EnvironmentName
|
||||||
|
from sh_edraft.hosting import ApplicationHost
|
||||||
|
from sh_edraft.logging.model import LoggingSettings, LoggingLevel
|
||||||
|
from sh_edraft.publishing.model import PublishSettings
|
||||||
|
from sh_edraft.time.model import TimeFormatSettings
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self._app_host = ApplicationHost()
|
||||||
|
self._config = cast(Configuration, self._app_host.configuration)
|
||||||
|
|
||||||
|
def test_create(self):
|
||||||
|
print(f'{__name__}.test_create:')
|
||||||
|
self.assertIsNotNone(self._config)
|
||||||
|
self._config.create()
|
||||||
|
self.assertIsNotNone(self._config)
|
||||||
|
|
||||||
|
self.assertEqual(len(self._config._config), 0)
|
||||||
|
self.assertIsNotNone(self._app_host.application_runtime)
|
||||||
|
|
||||||
|
def test_env_vars(self):
|
||||||
|
print(f'{__name__}.test_env_vars:')
|
||||||
|
self._config.add_environment_variables('PYTHON_')
|
||||||
|
self._config.add_environment_variables('CPL_')
|
||||||
|
|
||||||
|
def test_arguments(self):
|
||||||
|
print(f'{__name__}.test_arguments:')
|
||||||
|
self._config.add_argument_variables()
|
||||||
|
self.assertEqual(self._config.environment.environment_name, EnvironmentName.testing.value)
|
||||||
|
|
||||||
|
def test_appsettings(self):
|
||||||
|
print(f'{__name__}.test_appsettings:')
|
||||||
|
self._config.add_json_file(f'appsettings.json')
|
||||||
|
|
||||||
|
time_formats: TimeFormatSettings = cast(TimeFormatSettings, self._config.get_configuration(TimeFormatSettings))
|
||||||
|
self.assertIsNotNone(time_formats)
|
||||||
|
self.assertEqual(time_formats.date_format, '%Y-%m-%d')
|
||||||
|
self.assertEqual(time_formats.time_format, '%H:%M:%S')
|
||||||
|
self.assertEqual(time_formats.date_time_format, '%Y-%m-%d %H:%M:%S.%f')
|
||||||
|
self.assertEqual(time_formats.date_time_log_format, '%Y-%m-%d_%H-%M-%S')
|
||||||
|
|
||||||
|
logging = cast(LoggingSettings, self._config.get_configuration(LoggingSettings))
|
||||||
|
self.assertIsNotNone(logging)
|
||||||
|
self.assertEqual(logging.path, 'logs/')
|
||||||
|
self.assertEqual(logging.filename, 'log_$start_time.log')
|
||||||
|
self.assertEqual(logging.console.value, LoggingLevel.ERROR.value)
|
||||||
|
self.assertEqual(logging.level.value, LoggingLevel.WARN.value)
|
||||||
|
|
||||||
|
with self.assertRaises(Exception):
|
||||||
|
publish: PublishSettings = cast(PublishSettings, self._config.get_configuration(PublishSettings))
|
||||||
|
|
||||||
|
def test_appsettings_environment(self):
|
||||||
|
print(f'{__name__}.test_appsettings_environment:')
|
||||||
|
self._config.add_argument_variables()
|
||||||
|
self._config.add_json_file(f'appsettings.{self._config.environment.environment_name}.json')
|
||||||
|
|
||||||
|
logging = cast(LoggingSettings, self._config.get_configuration(LoggingSettings))
|
||||||
|
self.assertIsNotNone(logging)
|
||||||
|
self.assertEqual(logging.path, 'logs/')
|
||||||
|
self.assertEqual(logging.filename, 'log_$start_time.log')
|
||||||
|
self.assertEqual(logging.console.value, LoggingLevel.TRACE.value)
|
||||||
|
self.assertEqual(logging.level.value, LoggingLevel.TRACE.value)
|
||||||
|
|
||||||
|
publish: PublishSettings = cast(PublishSettings, self._config.get_configuration(PublishSettings))
|
||||||
|
self.assertIsNotNone(publish)
|
||||||
|
self.assertEqual(publish.source_path, '../')
|
||||||
|
self.assertEqual(publish.dist_path, '../../dist')
|
||||||
|
self.assertEqual(publish.templates, [])
|
||||||
|
self.assertEqual(publish.included_files, [])
|
||||||
|
self.assertEqual(publish.excluded_files, [])
|
||||||
|
self.assertEqual(publish.template_ending, '_template.txt')
|
||||||
|
|
||||||
|
def test_appsettings_host(self):
|
||||||
|
print(f'{__name__}.test_appsettings_host:')
|
||||||
|
self._config.add_json_file(f'appsettings.{self._config.environment.host_name}.json')
|
||||||
|
|
||||||
|
def test_appsettings_customer(self):
|
||||||
|
print(f'{__name__}.test_appsettings_customer:')
|
||||||
|
file_name = f'appsettings.{self._config.environment.customer}.json'
|
||||||
|
with self.assertRaises(SystemExit):
|
||||||
|
if os.path.isfile(f'{self._config.environment.content_root_path}/{file_name}'):
|
||||||
|
os.remove(f'{self._config.environment.content_root_path}/{file_name}')
|
||||||
|
|
||||||
|
self._config.add_json_file(file_name)
|
||||||
|
|
||||||
|
self._config.add_json_file(file_name, optional=True)
|
33
src/tests/hosting/app_host.py
Normal file
33
src/tests/hosting/app_host.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from sh_edraft.configuration.base import ConfigurationBase
|
||||||
|
from sh_edraft.hosting import ApplicationHost
|
||||||
|
from sh_edraft.hosting.base import ApplicationRuntimeBase
|
||||||
|
from sh_edraft.service.base import ServiceProviderBase
|
||||||
|
|
||||||
|
|
||||||
|
class AppHostTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_create(self):
|
||||||
|
print(f'{__name__}.test_create:')
|
||||||
|
app_host = ApplicationHost()
|
||||||
|
self.assertIsNotNone(app_host)
|
||||||
|
app_host.create()
|
||||||
|
|
||||||
|
self.assertIsNotNone(app_host.configuration)
|
||||||
|
self.assertTrue(isinstance(app_host.configuration, ConfigurationBase))
|
||||||
|
|
||||||
|
self.assertIsNotNone(app_host.application_runtime)
|
||||||
|
self.assertTrue(isinstance(app_host.application_runtime, ApplicationRuntimeBase))
|
||||||
|
|
||||||
|
self.assertIsNotNone(app_host.services)
|
||||||
|
self.assertTrue(isinstance(app_host.services, ServiceProviderBase))
|
||||||
|
|
||||||
|
self.assertIsNotNone(app_host._start_time)
|
||||||
|
self.assertTrue(isinstance(app_host._start_time, datetime.datetime))
|
||||||
|
self.assertIsNotNone(app_host._end_time)
|
||||||
|
self.assertTrue(isinstance(app_host._end_time, datetime.datetime))
|
0
src/tests/services/__init__.py
Normal file
0
src/tests/services/__init__.py
Normal file
0
src/tests/services/logging/__init__.py
Normal file
0
src/tests/services/logging/__init__.py
Normal file
0
src/tests/services/publishing/__init__.py
Normal file
0
src/tests/services/publishing/__init__.py
Normal file
@ -83,6 +83,7 @@ class PublisherTest(unittest.TestCase):
|
|||||||
shutil.rmtree(self._log_settings.path)
|
shutil.rmtree(self._log_settings.path)
|
||||||
|
|
||||||
def test_create(self):
|
def test_create(self):
|
||||||
|
print(f'{__name__}.test_create:')
|
||||||
publisher: Publisher = Publisher(self._logger, self._publish_settings_model)
|
publisher: Publisher = Publisher(self._logger, self._publish_settings_model)
|
||||||
self.assertIsNotNone(publisher)
|
self.assertIsNotNone(publisher)
|
||||||
|
|
@ -1,7 +1,9 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from tests.logging.logger import LoggerTest
|
from tests.configuration.config import ConfigTest
|
||||||
from tests.publishing.publisher import PublisherTest
|
from tests.hosting.app_host import AppHostTest
|
||||||
|
from tests.services.logging.logger import LoggerTest
|
||||||
|
from tests.services.publishing.publisher import PublisherTest
|
||||||
from tests.service_providing.service_provider import ServiceProviderTest
|
from tests.service_providing.service_provider import ServiceProviderTest
|
||||||
|
|
||||||
|
|
||||||
@ -11,6 +13,18 @@ class Tester:
|
|||||||
self._suite = unittest.TestSuite()
|
self._suite = unittest.TestSuite()
|
||||||
|
|
||||||
def create(self):
|
def create(self):
|
||||||
|
# hosting app host
|
||||||
|
self._suite.addTest(AppHostTest('test_create'))
|
||||||
|
|
||||||
|
# configuration
|
||||||
|
self._suite.addTest(ConfigTest('test_create'))
|
||||||
|
self._suite.addTest(ConfigTest('test_env_vars'))
|
||||||
|
self._suite.addTest(ConfigTest('test_arguments'))
|
||||||
|
self._suite.addTest(ConfigTest('test_appsettings'))
|
||||||
|
self._suite.addTest(ConfigTest('test_appsettings_environment'))
|
||||||
|
self._suite.addTest(ConfigTest('test_appsettings_host'))
|
||||||
|
self._suite.addTest(ConfigTest('test_appsettings_customer'))
|
||||||
|
|
||||||
# providing
|
# providing
|
||||||
self._suite.addTest(ServiceProviderTest('test_create'))
|
self._suite.addTest(ServiceProviderTest('test_create'))
|
||||||
self._suite.addTest(ServiceProviderTest('test_add_singleton'))
|
self._suite.addTest(ServiceProviderTest('test_add_singleton'))
|
||||||
|
@ -14,14 +14,14 @@ class Program(ApplicationBase):
|
|||||||
ApplicationBase.__init__(self)
|
ApplicationBase.__init__(self)
|
||||||
|
|
||||||
self._app_host: Optional[ApplicationHost] = None
|
self._app_host: Optional[ApplicationHost] = None
|
||||||
|
|
||||||
self._services: Optional[ServiceProviderBase] = None
|
self._services: Optional[ServiceProviderBase] = None
|
||||||
self._configuration: Optional[ConfigurationBase] = None
|
self._configuration: Optional[ConfigurationBase] = None
|
||||||
|
self._logger: Optional[LoggerBase] = None
|
||||||
|
|
||||||
def create_application_host(self):
|
def create_application_host(self):
|
||||||
self._app_host = ApplicationHost()
|
self._app_host = ApplicationHost()
|
||||||
self._services = self._app_host.services
|
|
||||||
self._configuration = self._app_host.configuration
|
self._configuration = self._app_host.configuration
|
||||||
|
self._services = self._app_host.services
|
||||||
|
|
||||||
def create_configuration(self):
|
def create_configuration(self):
|
||||||
self._configuration.create()
|
self._configuration.create()
|
||||||
@ -35,12 +35,11 @@ class Program(ApplicationBase):
|
|||||||
def create_services(self):
|
def create_services(self):
|
||||||
self._services.create()
|
self._services.create()
|
||||||
self._services.add_singleton(LoggerBase, Logger)
|
self._services.add_singleton(LoggerBase, Logger)
|
||||||
logger: Logger = self._services.get_service(LoggerBase)
|
self._logger = self._services.get_service(LoggerBase)
|
||||||
logger.create()
|
self._logger.create()
|
||||||
logger.header(f'{self._configuration.environment.application_name}:')
|
|
||||||
logger.debug(__name__, f'Host: {self._configuration.environment.host_name}')
|
|
||||||
logger.debug(__name__, f'Environment: {self._configuration.environment.environment_name}')
|
|
||||||
logger.debug(__name__, f'Customer: {self._configuration.environment.customer}')
|
|
||||||
|
|
||||||
def main(self):
|
def main(self):
|
||||||
print('RUN')
|
self._logger.header(f'{self._configuration.environment.application_name}:')
|
||||||
|
self._logger.debug(__name__, f'Host: {self._configuration.environment.host_name}')
|
||||||
|
self._logger.debug(__name__, f'Environment: {self._configuration.environment.environment_name}')
|
||||||
|
self._logger.debug(__name__, f'Customer: {self._configuration.environment.customer}')
|
||||||
|
Loading…
Reference in New Issue
Block a user