OpenBB / cli /tests /test_controllers_controller_factory.py
CatPtain's picture
Upload 70 files
b93364a verified
"""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
]