File size: 3,793 Bytes
b93364a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
"""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")
|