|
|
"""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) |
|
|
|