| """Test the base controller.""" |
|
|
| from unittest.mock import MagicMock, patch |
|
|
| import pytest |
| from openbb_cli.controllers.base_controller import BaseController |
|
|
| |
|
|
|
|
| class TestableBaseController(BaseController): |
| """Testable Base Controller.""" |
|
|
| def __init__(self, queue=None): |
| """Initialize the TestableBaseController.""" |
| self.PATH = "/valid/path/" |
| super().__init__(queue=queue) |
|
|
| def print_help(self): |
| """Print help.""" |
|
|
|
|
| def test_base_controller_initialization(): |
| """Test the initialization of the base controller.""" |
| with patch.object(TestableBaseController, "check_path", return_value=None): |
| controller = TestableBaseController() |
| assert controller.path == ["valid", "path"] |
|
|
|
|
| def test_path_validation(): |
| """Test the path validation method.""" |
| controller = TestableBaseController() |
|
|
| with pytest.raises(ValueError): |
| controller.PATH = "invalid/path" |
| controller.check_path() |
|
|
| with pytest.raises(ValueError): |
| controller.PATH = "/invalid/path" |
| controller.check_path() |
|
|
| with pytest.raises(ValueError): |
| controller.PATH = "/Invalid/Path/" |
| controller.check_path() |
|
|
| controller.PATH = "/valid/path/" |
|
|
|
|
| def test_parse_input(): |
| """Test the parse input method.""" |
| controller = TestableBaseController() |
| input_str = "cmd1/cmd2/cmd3" |
| expected = ["cmd1", "cmd2", "cmd3"] |
| result = controller.parse_input(input_str) |
| assert result == expected |
|
|
|
|
| def test_switch(): |
| """Test the switch method.""" |
| controller = TestableBaseController() |
| with patch.object(controller, "call_exit", MagicMock()) as mock_exit: |
| controller.queue = ["exit"] |
| controller.switch("exit") |
| mock_exit.assert_called_once() |
|
|
|
|
| def test_call_help(): |
| """Test the call help method.""" |
| controller = TestableBaseController() |
| with patch("openbb_cli.controllers.base_controller.session.console.print"): |
| controller.call_help(None) |
|
|
|
|
| def test_call_exit(): |
| """Test the call exit method.""" |
| controller = TestableBaseController() |
| with patch.object(controller, "save_class", MagicMock()): |
| controller.queue = ["quit"] |
| controller.call_exit(None) |
|
|