diff --git a/src/sh_edraft/configuration/base/configuration_base.py b/src/sh_edraft/configuration/base/configuration_base.py index 06c8bfe8..40c68555 100644 --- a/src/sh_edraft/configuration/base/configuration_base.py +++ b/src/sh_edraft/configuration/base/configuration_base.py @@ -10,10 +10,6 @@ class ConfigurationBase(ABC): @abstractmethod def __init__(self): pass - @property - @abstractmethod - def config(self) -> dict[type, object]: pass - @abstractmethod def add_config_by_type(self, key_type: type, value: object): pass diff --git a/src/sh_edraft/configuration/configuration.py b/src/sh_edraft/configuration/configuration.py index b3743aff..39e1767d 100644 --- a/src/sh_edraft/configuration/configuration.py +++ b/src/sh_edraft/configuration/configuration.py @@ -11,10 +11,6 @@ class Configuration(ConfigurationBase): self._config: dict[type, object] = {} - @property - def config(self): - return self._config - def create(self): pass def add_config_by_type(self, key_type: type, value: object): diff --git a/src/sh_edraft/hosting/application_host.py b/src/sh_edraft/hosting/application_host.py index f1342626..09eafb99 100644 --- a/src/sh_edraft/hosting/application_host.py +++ b/src/sh_edraft/hosting/application_host.py @@ -3,6 +3,7 @@ from datetime import datetime from sh_edraft.configuration.configuration import Configuration from sh_edraft.configuration.base.configuration_base import ConfigurationBase +from sh_edraft.hosting.base.application_runtime_base import ApplicationRuntimeBase from sh_edraft.hosting.base.environment_base import EnvironmentBase from sh_edraft.hosting.hosting_environment import HostingEnvironment from sh_edraft.hosting.application_runtime import ApplicationRuntime @@ -30,13 +31,17 @@ class ApplicationHost(ApplicationHostBase): def name(self) -> str: return self._name + @property + def configuration(self) -> ConfigurationBase: + return self._config + @property def environment(self) -> EnvironmentBase: return self._environment @property - def configuration(self) -> ConfigurationBase: - return self._config + def application_runtime(self) -> ApplicationRuntimeBase: + return self._app_runtime @property def services(self) -> ServiceProviderBase: diff --git a/src/sh_edraft/hosting/base/application_host_base.py b/src/sh_edraft/hosting/base/application_host_base.py index 4e6c88e5..117ec546 100644 --- a/src/sh_edraft/hosting/base/application_host_base.py +++ b/src/sh_edraft/hosting/base/application_host_base.py @@ -1,6 +1,7 @@ from abc import ABC, abstractmethod from sh_edraft.configuration.base.configuration_base import ConfigurationBase +from sh_edraft.hosting.base.application_runtime_base import ApplicationRuntimeBase from sh_edraft.hosting.base.environment_base import EnvironmentBase from sh_edraft.service.base.service_provider_base import ServiceProviderBase @@ -14,13 +15,17 @@ class ApplicationHostBase(ABC): @abstractmethod def name(self) -> str: pass + @property + @abstractmethod + def configuration(self) -> ConfigurationBase: pass + @property @abstractmethod def environment(self) -> EnvironmentBase: pass @property @abstractmethod - def configuration(self) -> ConfigurationBase: pass + def application_runtime(self) -> ApplicationRuntimeBase: pass @property @abstractmethod diff --git a/src/tests/logging/logger.py b/src/tests/logging/logger.py index e41a1491..1fb3d3a7 100644 --- a/src/tests/logging/logger.py +++ b/src/tests/logging/logger.py @@ -2,18 +2,24 @@ import os import shutil import unittest from string import Template +from typing import cast -from sh_edraft.hosting import ApplicationHost, HostingEnvironment -from sh_edraft.hosting.model import EnvironmentName +from sh_edraft.hosting import ApplicationHost from sh_edraft.logging import Logger from sh_edraft.logging.model import LoggingSettings +from sh_edraft.service import ServiceProvider from sh_edraft.time.model import TimeFormatSettings class LoggerTest(unittest.TestCase): def setUp(self): - self._app_host = ApplicationHost('CPL_Test', HostingEnvironment(EnvironmentName.testing, './')) + app_host = ApplicationHost('CPL_Test') + self._app_runtime = app_host.application_runtime + self._config = app_host.configuration + self._config.create() + self._services: ServiceProvider = cast(ServiceProvider, app_host.services) + self._services.create() self._log_settings = LoggingSettings() self._log_settings.from_dict({ @@ -41,25 +47,25 @@ class LoggerTest(unittest.TestCase): def test_create(self): print(f'{__name__}.test_create:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() self.assertTrue(os.path.isdir(self._log_settings.path)) log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) self.assertTrue(os.path.isfile(self._log_settings.path + log_file)) def test_header(self): print(f'{__name__}.test_header:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() logger.header('HeaderTest:') log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) log_content = [] @@ -75,13 +81,13 @@ class LoggerTest(unittest.TestCase): def test_trace(self): print(f'{__name__}.test_trace:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() logger.trace(__name__, f'{__name__}.test_trace:') log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) log_content = [] @@ -97,13 +103,13 @@ class LoggerTest(unittest.TestCase): def test_debug(self): print(f'{__name__}.test_debug:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() logger.debug(__name__, f'{__name__}.test_debug:') log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) log_content = [] @@ -119,13 +125,13 @@ class LoggerTest(unittest.TestCase): def test_info(self): print(f'{__name__}.test_info:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() logger.info(__name__, f'{__name__}.test_info:') log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) log_content = [] @@ -141,13 +147,13 @@ class LoggerTest(unittest.TestCase): def test_warn(self): print(f'{__name__}.test_warn:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() logger.warn(__name__, f'{__name__}.test_warn:') log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) log_content = [] @@ -163,13 +169,13 @@ class LoggerTest(unittest.TestCase): def test_error(self): print(f'{__name__}.test_error:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() logger.error(__name__, f'{__name__}.test_error:') log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) log_content = [] @@ -185,14 +191,14 @@ class LoggerTest(unittest.TestCase): def test_fatal(self): print(f'{__name__}.test_fatal:') - logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + logger = Logger(self._log_settings, self._time_format_settings, self._app_runtime) logger.create() with self.assertRaises(SystemExit): logger.fatal(__name__, f'{__name__}.test_fatal:') log_file = Template(self._log_settings.filename).substitute( - date_time_now=self._app_host.date_time_now.strftime(self._time_format_settings.date_time_format), - start_time=self._app_host.start_time.strftime(self._time_format_settings.date_time_log_format) + date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format), + start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format) ) log_content = [] diff --git a/src/tests/publishing/publisher.py b/src/tests/publishing/publisher.py index cb721a41..a9e91254 100644 --- a/src/tests/publishing/publisher.py +++ b/src/tests/publishing/publisher.py @@ -15,7 +15,7 @@ from sh_edraft.time.model import TimeFormatSettings class PublisherTest(unittest.TestCase): - def _config(self): + def _configure(self): self._log_settings = LoggingSettings() self._log_settings.from_dict({ "Path": "logs/", @@ -76,10 +76,12 @@ class PublisherTest(unittest.TestCase): }) def setUp(self): - self._config() + self._configure() - self._app_host = ApplicationHost('CPL_Test', HostingEnvironment(EnvironmentName.testing, './')) - self._logger = Logger(self._log_settings, self._time_format_settings, self._app_host) + app_host = ApplicationHost('CPL_Test') + self._app_runtime = app_host.application_runtime + + self._logger = Logger(self._log_settings, self._time_format_settings, app_host.application_runtime) self._logger.create() def tearDown(self): @@ -92,3 +94,4 @@ class PublisherTest(unittest.TestCase): publisher.create() self.assertTrue(os.path.isdir(self._dist_path)) + self.assertEqual(publisher._publish_settings, self._publish_settings_model) diff --git a/src/tests/service_providing/service_provider.py b/src/tests/service_providing/service_provider.py index a6626763..6efbcfbb 100644 --- a/src/tests/service_providing/service_provider.py +++ b/src/tests/service_providing/service_provider.py @@ -1,8 +1,8 @@ import unittest +from collections import Callable +from typing import Type, cast from sh_edraft.hosting import ApplicationHost -from sh_edraft.hosting import HostingEnvironment -from sh_edraft.hosting.model import EnvironmentName from sh_edraft.logging import Logger from sh_edraft.logging.base import LoggerBase from sh_edraft.logging.model import LoggingSettings @@ -17,8 +17,10 @@ from sh_edraft.time.model import TimeFormatSettings class ServiceProviderTest(unittest.TestCase): def setUp(self): - self._app_host = ApplicationHost('CPL_Test', HostingEnvironment(EnvironmentName.testing, './')) - self._services = self._app_host.services + self._app_host = ApplicationHost('CPL_Test') + self._config = self._app_host.configuration + self._config.create() + self._services: ServiceProvider = cast(ServiceProvider, self._app_host.services) self._services.create() self._log_settings = LoggingSettings() @@ -28,7 +30,7 @@ class ServiceProviderTest(unittest.TestCase): "ConsoleLogLevel": "TRACE", "FileLogLevel": "TRACE" }) - self._services.config.add_config_by_type(LoggingSettings, self._log_settings) + self._config.add_config_by_type(LoggingSettings, self._log_settings) self._time_format_settings = TimeFormatSettings() self._time_format_settings.from_dict({ @@ -37,8 +39,8 @@ class ServiceProviderTest(unittest.TestCase): "DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f", "DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S" }) - self._services.config.add_config_by_type(TimeFormatSettings, self._time_format_settings) - self._services.config.add_config_by_type(ApplicationHost, self._app_host) + self._config.add_config_by_type(TimeFormatSettings, self._time_format_settings) + self._config.add_config_by_type(ApplicationHost, self._app_host) self._publish_settings_model = PublishSettingsModel() self._publish_settings_model.from_dict({ @@ -49,7 +51,7 @@ class ServiceProviderTest(unittest.TestCase): "ExcludedFiles": [], "TemplateEnding": "_template.txt", }) - self._services.config.add_config_by_type(PublishSettingsModel, self._publish_settings_model) + self._config.add_config_by_type(PublishSettingsModel, self._publish_settings_model) def _check_general_requirements(self): self.assertIsNotNone(self._services) @@ -61,7 +63,7 @@ class ServiceProviderTest(unittest.TestCase): def test_create(self): print(f'{__name__}.test_create:') - provider = ServiceProvider(self._app_host) + provider = ServiceProvider(self._app_host.application_runtime) self.assertIsNotNone(provider) provider.create() self.assertIsNotNone(provider) @@ -108,7 +110,7 @@ class ServiceProviderTest(unittest.TestCase): self.assertEqual(logger._log_settings, self._log_settings) self.assertEqual(logger._time_format_settings, self._time_format_settings) - self.assertEqual(logger._app_host, self._app_host) + self.assertEqual(logger._app_runtime, self._app_host.application_runtime) def test_add_scoped(self): print(f'{__name__}.test_add_scoped:')