diff --git a/force_bdss/tests/test_core_evaluation_driver.py b/force_bdss/tests/test_core_evaluation_driver.py new file mode 100644 index 0000000000000000000000000000000000000000..9ececcf5c23c404b5fc7c75fe058fac05244de37 --- /dev/null +++ b/force_bdss/tests/test_core_evaluation_driver.py @@ -0,0 +1,114 @@ +import unittest + +from force_bdss.bundle_registry_plugin import BundleRegistryPlugin +from force_bdss.data_sources.base_data_source import BaseDataSource +from force_bdss.data_sources.base_data_source_bundle import \ + BaseDataSourceBundle +from force_bdss.data_sources.base_data_source_model import BaseDataSourceModel +from force_bdss.kpi.base_kpi_calculator import BaseKPICalculator +from force_bdss.kpi.base_kpi_calculator_bundle import BaseKPICalculatorBundle +from force_bdss.kpi.base_kpi_calculator_model import BaseKPICalculatorModel +from force_bdss.mco.base_mco import BaseMCO +from force_bdss.mco.base_mco_bundle import BaseMCOBundle +from force_bdss.mco.base_mco_communicator import BaseMCOCommunicator +from force_bdss.mco.base_mco_model import BaseMCOModel +from force_bdss.tests import fixtures + +try: + import mock +except ImportError: + from unittest import mock + +from envisage.api import Application + +from force_bdss.core_evaluation_driver import CoreEvaluationDriver + + +class NullMCOModel(BaseMCOModel): + pass + + +class NullMCO(BaseMCO): + def run(self, model): + pass + + +class NullMCOCommunicator(BaseMCOCommunicator): + def send_to_mco(self, model, kpi_results): + pass + + def receive_from_mco(self, model): + pass + + +class NullMCOBundle(BaseMCOBundle): + def create_model(self, model_data=None): + return NullMCOModel(self) + + def create_communicator(self): + return NullMCOCommunicator(self) + + def create_optimizer(self): + return NullMCO(self) + + +class NullKPICalculatorModel(BaseKPICalculatorModel): + pass + + +class NullKPICalculator(BaseKPICalculator): + def run(self, model, data_source_results): + pass + + +class NullKPICalculatorBundle(BaseKPICalculatorBundle): + def create_model(self, model_data=None): + return NullKPICalculatorModel(self) + + def create_kpi_calculator(self): + return NullKPICalculator(self) + + +class NullDataSourceModel(BaseDataSourceModel): + pass + + +class NullDataSource(BaseDataSource): + def run(self, model, parameters): + pass + + +class NullDataSourceBundle(BaseDataSourceBundle): + def create_model(self, model_data=None): + return NullDataSourceModel(self) + + def create_data_source(self): + return NullDataSource(self) + + +def mock_bundle_registry_plugin(): + bundle_registry_plugin = mock.Mock(spec=BundleRegistryPlugin) + bundle_registry_plugin.mco_bundle_by_id = mock.Mock( + return_value=NullMCOBundle(bundle_registry_plugin)) + bundle_registry_plugin.kpi_calculator_bundle_by_id = mock.Mock( + return_value=NullKPICalculatorBundle(bundle_registry_plugin)) + bundle_registry_plugin.data_source_bundle_by_id = mock.Mock( + return_value=NullDataSourceBundle(bundle_registry_plugin)) + return bundle_registry_plugin + + +class TestCoreEvaluationDriver(unittest.TestCase): + def setUp(self): + self.mock_bundle_registry_plugin = mock_bundle_registry_plugin() + application = mock.Mock(spec=Application) + application.get_plugin = mock.Mock( + return_value=self.mock_bundle_registry_plugin + ) + application.workflow_filepath = fixtures.get("test_csv.json") + self.mock_application = application + + def test_initialization(self): + driver = CoreEvaluationDriver( + application=self.mock_application, + ) + driver.application_started()