summaryrefslogtreecommitdiffstats
path: root/cli/tests/test_controllers_controller_factory.py
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/test_controllers_controller_factory.py')
-rw-r--r--cli/tests/test_controllers_controller_factory.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/cli/tests/test_controllers_controller_factory.py b/cli/tests/test_controllers_controller_factory.py
new file mode 100644
index 00000000000..8832885b47a
--- /dev/null
+++ b/cli/tests/test_controllers_controller_factory.py
@@ -0,0 +1,61 @@
+"""Test the Controller Factory."""
+
+from unittest.mock import MagicMock, patch
+
+import pytest
+from openbb_cli.controllers.platform_controller_factory import (
+ PlatformControllerFactory,
+)
+
+# pylint: disable=redefined-outer-name, unused-argument
+
+
+@pytest.fixture
+def mock_processor():
+ """Fixture to mock ArgparseClassProcessor."""
+ with patch(
+ "openbb_cli.controllers.platform_controller_factory.ArgparseClassProcessor"
+ ) as mock:
+ instance = mock.return_value
+ instance.paths = {"settings": "menu"}
+ instance.translators = {"test_router_settings": MagicMock()}
+ yield instance
+
+
+@pytest.fixture
+def platform_router():
+ """Fixture to provide a mock platform_router class."""
+
+ class MockRouter:
+ pass
+
+ return MockRouter
+
+
+@pytest.fixture
+def factory(platform_router, mock_processor):
+ """Fixture to create a PlatformControllerFactory with mocked dependencies."""
+ return PlatformControllerFactory(
+ platform_router=platform_router, reference={"test": "ref"}
+ )
+
+
+def test_init(mock_processor):
+ """Test the initialization of the PlatformControllerFactory."""
+ factory = PlatformControllerFactory(
+ platform_router=MagicMock(), reference={"test": "ref"}
+ )
+ assert factory.router_name.lower() == "magicmock"
+ assert factory.controller_name == "MagicmockController"
+
+
+def test_create_controller(factory):
+ """Test the creation of a controller class."""
+ ControllerClass = factory.create()
+
+ assert "PlatformController" in [base.__name__ for base in ControllerClass.__bases__]
+ assert ControllerClass.CHOICES_GENERATION
+ assert "settings" in ControllerClass.CHOICES_MENUS
+ assert "test_router_settings" not in [
+ cmd.replace("test_router_", "") for cmd in ControllerClass.CHOICES_COMMANDS
+ ]