OpenBB / cli /tests /test_controllers_base_controller.py
CatPtain's picture
Upload 70 files
b93364a verified
"""Test the base controller."""
from unittest.mock import MagicMock, patch
import pytest
from openbb_cli.controllers.base_controller import BaseController
# pylint: disable=unused-argument, unused-variable
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"] # Checking for correct path split
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)