| """Test the base platform controller.""" |
|
|
| from unittest.mock import MagicMock, Mock, patch |
|
|
| import pytest |
| from openbb_cli.controllers.base_platform_controller import ( |
| PlatformController, |
| Session, |
| ) |
|
|
| |
|
|
|
|
| @pytest.fixture |
| def platform_controller(): |
| """Return a platform controller.""" |
| session = Session() |
| translators = {"test_command": MagicMock(), "test_menu": MagicMock()} |
| translators["test_command"]._parser = Mock( |
| _actions=[Mock(dest="data", choices=[], type=str, nargs=None)] |
| ) |
| translators["test_command"].execute_func = Mock(return_value=Mock()) |
| translators["test_menu"]._parser = Mock( |
| _actions=[Mock(dest="data", choices=[], type=str, nargs=None)] |
| ) |
| translators["test_menu"].execute_func = Mock(return_value=Mock()) |
|
|
| controller = PlatformController( |
| name="test", parent_path=["platform"], translators=translators |
| ) |
| return controller |
|
|
|
|
| @pytest.mark.integration |
| def test_platform_controller_initialization(platform_controller): |
| """Test the initialization of the platform controller.""" |
| expected_path = "/platform/test/" |
| assert ( |
| expected_path == platform_controller.PATH |
| ), "Controller path was not set correctly" |
|
|
|
|
| @pytest.mark.integration |
| def test_command_generation(platform_controller): |
| """Test the generation of commands.""" |
| command_name = "test_command" |
| mock_execute_func = Mock(return_value=(Mock(), None)) |
| platform_controller.translators[command_name].execute_func = mock_execute_func |
|
|
| platform_controller._generate_command_call( |
| name=command_name, translator=platform_controller.translators[command_name] |
| ) |
| command_method_name = f"call_{command_name}" |
| assert hasattr( |
| platform_controller, command_method_name |
| ), "Command method was not created" |
|
|
|
|
| @patch( |
| "openbb_cli.controllers.base_platform_controller.PlatformController._link_obbject_to_data_processing_commands" |
| ) |
| @patch( |
| "openbb_cli.controllers.base_platform_controller.PlatformController._generate_commands" |
| ) |
| @patch( |
| "openbb_cli.controllers.base_platform_controller.PlatformController._generate_sub_controllers" |
| ) |
| @pytest.mark.integration |
| def test_platform_controller_calls( |
| mock_sub_controllers, mock_commands, mock_link_commands |
| ): |
| """Test the calls of the platform controller.""" |
| translators = {"test_command": Mock()} |
| translators["test_command"].parser = Mock() |
| translators["test_command"].execute_func = Mock() |
| _ = PlatformController( |
| name="test", parent_path=["platform"], translators=translators |
| ) |
| mock_sub_controllers.assert_called_once() |
| mock_commands.assert_called_once() |
| mock_link_commands.assert_called_once() |
|
|