Skip to content
Snippets Groups Projects
test_bundle_registry_plugin.py 2.74 KiB
Newer Older
import unittest

Stefano Borini's avatar
Stefano Borini committed
from force_bdss.base_extension_plugin import (
    BaseExtensionPlugin)

try:
    import mock
except ImportError:
    from unittest import mock

from envisage.application import Application

from force_bdss.bundle_registry_plugin import BundleRegistryPlugin
from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
from force_bdss.kpi.i_kpi_calculator_bundle import IKPICalculatorBundle
from force_bdss.mco.i_mco_bundle import \
    IMCOBundle


class TestBundleRegistry(unittest.TestCase):
    def setUp(self):
        self.plugin = BundleRegistryPlugin()
        self.app = Application([self.plugin])
        self.app.start()
        self.app.stop()

    def test_initialization(self):
        self.assertEqual(self.plugin.mco_bundles, [])
        self.assertEqual(self.plugin.data_source_bundles, [])
        self.assertEqual(self.plugin.kpi_calculator_bundles, [])


Stefano Borini's avatar
Stefano Borini committed
class MySuperPlugin(BaseExtensionPlugin):
    def _mco_bundles_default(self):
        return [mock.Mock(spec=IMCOBundle,
                          id=bundle_id("enthought", "mco1"))]

    def _data_source_bundles_default(self):
        return [mock.Mock(spec=IDataSourceBundle,
                          id=bundle_id("enthought", "ds1")),
                mock.Mock(spec=IDataSourceBundle,
                          id=bundle_id("enthought", "ds2"))]

    def _kpi_calculator_bundles_default(self):
        return [mock.Mock(spec=IKPICalculatorBundle,
                          id=bundle_id("enthought", "kpi1")),
                mock.Mock(spec=IKPICalculatorBundle,
                          id=bundle_id("enthought", "kpi2")),
                mock.Mock(spec=IKPICalculatorBundle,
                          id=bundle_id("enthought", "kpi3"))]


class TestBundleRegistryWithContent(unittest.TestCase):
    def setUp(self):
        self.plugin = BundleRegistryPlugin()
        self.app = Application([self.plugin, MySuperPlugin()])
        self.app.start()
        self.app.stop()

    def test_initialization(self):
        self.assertEqual(len(self.plugin.mco_bundles), 1)
        self.assertEqual(len(self.plugin.data_source_bundles), 2)
        self.assertEqual(len(self.plugin.kpi_calculator_bundles), 3)

    def test_lookup(self):
        id = bundle_id("enthought", "mco1")
        self.assertEqual(self.plugin.mco_bundle_by_id(id).id, id)

        for entry in ["ds1", "ds2"]:
            id = bundle_id("enthought", entry)
            self.assertEqual(self.plugin.data_source_bundle_by_id(id).id, id)

        for entry in ["kpi1", "kpi2", "kpi3"]:
            id = bundle_id("enthought", entry)
            self.assertEqual(self.plugin.kpi_calculator_bundle_by_id(id).id,
                             id)

Stefano Borini's avatar
Stefano Borini committed

if __name__ == '__main__':
    unittest.main()