From 952151bfc59918d8557414ff9c8cad01647d9961 Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Wed, 25 Apr 2018 11:08:26 +0100
Subject: [PATCH] Fixed tests and incorrect import of class type via string

---
 .../data_sources/i_data_source_factory.py      | 11 ++++++-----
 force_bdss/kpi/i_kpi_calculator_factory.py     | 11 ++++++-----
 force_bdss/mco/i_mco_factory.py                | 16 +++++++++-------
 .../parameters/base_mco_parameter_factory.py   |  8 ++++----
 .../tests/test_base_mco_parameter_factory.py   |  9 ++++++++-
 .../i_notification_listener_factory.py         | 18 +++++++++---------
 force_bdss/ui_hooks/i_ui_hooks_factory.py      |  8 ++++----
 7 files changed, 46 insertions(+), 35 deletions(-)

diff --git a/force_bdss/data_sources/i_data_source_factory.py b/force_bdss/data_sources/i_data_source_factory.py
index 7cbaa3b..9af71bf 100644
--- a/force_bdss/data_sources/i_data_source_factory.py
+++ b/force_bdss/data_sources/i_data_source_factory.py
@@ -1,9 +1,6 @@
 from envisage.api import Plugin
 from traits.api import Interface, String, Instance, Type
 
-from force_bdss.data_sources.base_data_source import BaseDataSource
-from force_bdss.data_sources.base_data_source_model import BaseDataSourceModel
-
 
 class IDataSourceFactory(Interface):
     """Envisage required interface for the BaseDataSourceFactory.
@@ -15,9 +12,13 @@ class IDataSourceFactory(Interface):
 
     name = String()
 
-    data_source_class = Type(BaseDataSource)
+    data_source_class = Type(
+        "force_bdss.data_sources.base_data_source.BaseDataSource"
+    )
 
-    model_class = Type(BaseDataSourceModel)
+    model_class = Type(
+        "force_bdss.data_sources.base_data_source_model.BaseDataSourceModel"
+    )
 
     plugin = Instance(Plugin)
 
diff --git a/force_bdss/kpi/i_kpi_calculator_factory.py b/force_bdss/kpi/i_kpi_calculator_factory.py
index dc2a163..2877217 100644
--- a/force_bdss/kpi/i_kpi_calculator_factory.py
+++ b/force_bdss/kpi/i_kpi_calculator_factory.py
@@ -1,9 +1,6 @@
 from traits.api import Interface, String, Instance, Type
 from envisage.plugin import Plugin
 
-from force_bdss.kpi.base_kpi_calculator import BaseKPICalculator
-from force_bdss.kpi.base_kpi_calculator_model import BaseKPICalculatorModel
-
 
 class IKPICalculatorFactory(Interface):
     """Envisage required interface for the BaseKPICalculatorFactory.
@@ -15,9 +12,13 @@ class IKPICalculatorFactory(Interface):
 
     name = String()
 
-    kpi_calculator_class = Type(BaseKPICalculator)
+    kpi_calculator_class = Type(
+        "force_bdss.kpi.base_kpi_calculator.BaseKPICalculator"
+    )
 
-    model_class = Type(BaseKPICalculatorModel)
+    model_class = Type(
+        "force_bdss.kpi.base_kpi_calculator_model.BaseKPICalculatorModel"
+    )
 
     plugin = Instance(Plugin)
 
diff --git a/force_bdss/mco/i_mco_factory.py b/force_bdss/mco/i_mco_factory.py
index 9ddfeb7..bc58e15 100644
--- a/force_bdss/mco/i_mco_factory.py
+++ b/force_bdss/mco/i_mco_factory.py
@@ -1,10 +1,6 @@
 from traits.api import Interface, String, Instance, Type
 from envisage.plugin import Plugin
 
-from force_bdss.mco.base_mco import BaseMCO
-from force_bdss.mco.base_mco_communicator import BaseMCOCommunicator
-from force_bdss.mco.base_mco_model import BaseMCOModel
-
 
 class IMCOFactory(Interface):
     """Interface for the BaseMCOFactory.
@@ -16,11 +12,17 @@ class IMCOFactory(Interface):
 
     name = String()
 
-    optimizer_class = Type(BaseMCO)
+    optimizer_class = Type(
+        "force_bdss.mco.base_mco.BaseMCO"
+    )
 
-    model_class = Type(BaseMCOModel)
+    model_class = Type(
+        "force_bdss.mco.base_mco_communicator.BaseMCOCommunicator"
+    )
 
-    communicator_class = Type(BaseMCOCommunicator)
+    communicator_class = Type(
+        "force_bdss.mco.base_mco_model.BaseMCOModel"
+    )
 
     plugin = Instance(Plugin)
 
diff --git a/force_bdss/mco/parameters/base_mco_parameter_factory.py b/force_bdss/mco/parameters/base_mco_parameter_factory.py
index 6ea3ceb..cd8751b 100644
--- a/force_bdss/mco/parameters/base_mco_parameter_factory.py
+++ b/force_bdss/mco/parameters/base_mco_parameter_factory.py
@@ -1,7 +1,5 @@
 from traits.api import HasStrictTraits, String, Type, Instance
 
-from ..base_mco_factory import BaseMCOFactory
-
 
 class BaseMCOParameterFactory(HasStrictTraits):
     """Factory that produces the model instance of a given BASEMCOParameter
@@ -13,7 +11,7 @@ class BaseMCOParameterFactory(HasStrictTraits):
     """
 
     #: A reference to the MCO factory this parameter factory lives in.
-    mco_factory = Instance(BaseMCOFactory)
+    mco_factory = Instance('force_bdss.mco.base_mco_factory.BaseMCOFactory')
 
     #: A unique string identifying the parameter
     id = String()
@@ -25,7 +23,9 @@ class BaseMCOParameterFactory(HasStrictTraits):
     description = String("Undefined parameter")
 
     # The model class to instantiate when create_model is called.
-    model_class = Type('BaseMCOParameter')
+    model_class = Type(
+        "force_bdss.mco.parameters.base_mco_parameter.BaseMCOParameter"
+    )
 
     def __init__(self, mco_factory, *args, **kwargs):
         self.mco_factory = mco_factory
diff --git a/force_bdss/mco/parameters/tests/test_base_mco_parameter_factory.py b/force_bdss/mco/parameters/tests/test_base_mco_parameter_factory.py
index 4c3a0ab..04206d7 100644
--- a/force_bdss/mco/parameters/tests/test_base_mco_parameter_factory.py
+++ b/force_bdss/mco/parameters/tests/test_base_mco_parameter_factory.py
@@ -1,5 +1,7 @@
 import unittest
 
+from envisage.plugin import Plugin
+
 from force_bdss.mco.base_mco_factory import BaseMCOFactory
 
 try:
@@ -25,9 +27,14 @@ class DummyMCOParameterFactory(BaseMCOParameterFactory):
     model_class = DummyMCOParameter
 
 
+class DummyMCOFactory(BaseMCOFactory):
+    pass
+
+
 class TestBaseMCOParameterFactory(unittest.TestCase):
     def test_initialization(self):
-        factory = DummyMCOParameterFactory(mock.Mock(spec=BaseMCOFactory))
+        factory = DummyMCOParameterFactory(
+            mco_factory=BaseMCOFactory(plugin=mock.Mock(spec=Plugin)))
         model = factory.create_model({"x": 42})
         self.assertIsInstance(model, DummyMCOParameter)
         self.assertEqual(model.x, 42)
diff --git a/force_bdss/notification_listeners/i_notification_listener_factory.py b/force_bdss/notification_listeners/i_notification_listener_factory.py
index 056dda0..3f6a07b 100644
--- a/force_bdss/notification_listeners/i_notification_listener_factory.py
+++ b/force_bdss/notification_listeners/i_notification_listener_factory.py
@@ -1,12 +1,6 @@
-from traits.api import Interface, String, Instance
+from traits.api import Interface, String, Instance, Type
 from envisage.plugin import Plugin
 
-from force_bdss.notification_listeners.base_notification_listener import \
-    BaseNotificationListener
-from force_bdss.notification_listeners.base_notification_listener_model \
-    import \
-    BaseNotificationListenerModel
-
 
 class INotificationListenerFactory(Interface):
     """Envisage required interface for the BaseNotificationListenerFactory.
@@ -18,9 +12,15 @@ class INotificationListenerFactory(Interface):
 
     name = String()
 
-    listener_class = Instance(BaseNotificationListener)
+    listener_class = Type(
+        "force_bdss.notification_listeners"
+        ".base_notification_listener.BaseNotificationListener"
+    )
 
-    model_class = Instance(BaseNotificationListenerModel)
+    model_class = Type(
+        "force_bdss.notification_listeners"
+        ".base_notification_listener_model.BaseNotificationListenerModel"
+    )
 
     plugin = Instance(Plugin)
 
diff --git a/force_bdss/ui_hooks/i_ui_hooks_factory.py b/force_bdss/ui_hooks/i_ui_hooks_factory.py
index c1a203c..f702a96 100644
--- a/force_bdss/ui_hooks/i_ui_hooks_factory.py
+++ b/force_bdss/ui_hooks/i_ui_hooks_factory.py
@@ -1,8 +1,6 @@
-from traits.api import Interface, String, Instance
+from traits.api import Interface, String, Instance, Type
 from envisage.plugin import Plugin
 
-from force_bdss.ui_hooks.base_ui_hooks_manager import BaseUIHooksManager
-
 
 class IUIHooksFactory(Interface):
     """Envisage required interface for the BaseUIHooksFactory.
@@ -14,7 +12,9 @@ class IUIHooksFactory(Interface):
 
     name = String()
 
-    ui_hooks_manager_class = Instance(BaseUIHooksManager)
+    ui_hooks_manager_class = Type(
+        "force_bdss.ui_hooks.base_ui_hooks_manager.BaseUIHooksManager"
+    )
 
     plugin = Instance(Plugin)
 
-- 
GitLab