|
|
"""Test the Controller Factory.""" |
|
|
|
|
|
from unittest.mock import MagicMock, patch |
|
|
|
|
|
import pytest |
|
|
from openbb_cli.controllers.platform_controller_factory import ( |
|
|
PlatformControllerFactory, |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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 |
|
|
] |
|
|
|