mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-05-07 06:23:26 +08:00
* Generate settings menu from pydantic model * fix tests * fix test * undo changes --------- Co-authored-by: Henrique Joaquim <henriquecjoaquim@gmail.com>
129 lines
3.7 KiB
Python
129 lines
3.7 KiB
Python
"""Test the SettingsController class."""
|
|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
from openbb_cli.controllers.settings_controller import SettingsController
|
|
|
|
# pylint: disable=redefined-outer-name, unused-argument, no-member
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_session():
|
|
with patch("openbb_cli.controllers.settings_controller.session") as mock:
|
|
mock.settings.USE_INTERACTIVE_DF = False
|
|
mock.settings.ALLOWED_NUMBER_OF_ROWS = 20
|
|
mock.settings.TIMEZONE = "UTC"
|
|
mock.style.available_styles = ["dark"]
|
|
mock.settings.set_item = MagicMock()
|
|
|
|
yield mock
|
|
|
|
|
|
def test_call_interactive(mock_session):
|
|
controller = SettingsController()
|
|
controller.call_interactive(None)
|
|
mock_session.settings.set_item.assert_called_once_with("USE_INTERACTIVE_DF", True)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input_rows, expected",
|
|
[
|
|
(10, 10),
|
|
(15, 15),
|
|
],
|
|
)
|
|
def test_call_n_rows(input_rows, expected, mock_session):
|
|
controller = SettingsController()
|
|
args = ["--value", str(input_rows)]
|
|
controller.call_n_rows(args)
|
|
mock_session.settings.set_item.assert_called_with(
|
|
"ALLOWED_NUMBER_OF_ROWS", expected
|
|
)
|
|
|
|
|
|
def test_call_n_rows_no_args_provided(mock_session):
|
|
controller = SettingsController()
|
|
controller.call_n_rows([])
|
|
mock_session.console.print.assert_called_with("[info]Current value:[/info] 20")
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"timezone, valid",
|
|
[
|
|
("UTC", True),
|
|
("Mars/Phobos", False),
|
|
],
|
|
)
|
|
def test_call_timezone(timezone, valid, mock_session):
|
|
controller = SettingsController()
|
|
args = ["--value", timezone]
|
|
controller.call_timezone(args)
|
|
if valid:
|
|
mock_session.settings.set_item.assert_called_with("TIMEZONE", timezone)
|
|
else:
|
|
mock_session.settings.set_item.assert_not_called()
|
|
|
|
|
|
def test_call_console_style(mock_session):
|
|
controller = SettingsController()
|
|
args = ["--value", "dark"]
|
|
controller.call_console_style(args)
|
|
mock_session.console.print.assert_called()
|
|
|
|
|
|
def test_call_console_style_no_args(mock_session):
|
|
mock_session.settings.RICH_STYLE = "default"
|
|
controller = SettingsController()
|
|
controller.call_console_style([])
|
|
mock_session.console.print.assert_called_with("[info]Current value:[/info] default")
|
|
|
|
|
|
def test_call_flair(mock_session):
|
|
controller = SettingsController()
|
|
args = ["--value", "rocket"]
|
|
controller.call_flair(args)
|
|
|
|
|
|
def test_call_flair_no_args(mock_session):
|
|
mock_session.settings.FLAIR = "bug"
|
|
controller = SettingsController()
|
|
controller.call_flair([])
|
|
mock_session.console.print.assert_called_with("[info]Current value:[/info] bug")
|
|
|
|
|
|
def test_call_obbject_display(mock_session):
|
|
controller = SettingsController()
|
|
args = ["--value", "5"]
|
|
controller.call_obbject_display(args)
|
|
mock_session.settings.set_item.assert_called_once_with(
|
|
"N_TO_DISPLAY_OBBJECT_REGISTRY", 5
|
|
)
|
|
|
|
|
|
def test_call_obbject_display_no_args(mock_session):
|
|
mock_session.settings.N_TO_DISPLAY_OBBJECT_REGISTRY = 10
|
|
controller = SettingsController()
|
|
controller.call_obbject_display([])
|
|
mock_session.console.print.assert_called_with("[info]Current value:[/info] 10")
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"args, expected",
|
|
[
|
|
(["--value", "50"], 50),
|
|
(["--value", "100"], 100),
|
|
([], 20),
|
|
],
|
|
)
|
|
def test_call_n_rows_v2(args, expected, mock_session):
|
|
mock_session.settings.ALLOWED_NUMBER_OF_ROWS = 20
|
|
controller = SettingsController()
|
|
controller.call_n_rows(args)
|
|
if args:
|
|
mock_session.settings.set_item.assert_called_with(
|
|
"ALLOWED_NUMBER_OF_ROWS", expected
|
|
)
|
|
else:
|
|
mock_session.console.print.assert_called_with("[info]Current value:[/info] 20")
|