| """Test the SettingsController class.""" |
|
|
| from unittest.mock import MagicMock, patch |
|
|
| import pytest |
| from openbb_cli.controllers.settings_controller import SettingsController |
|
|
| |
|
|
|
|
| @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") |
|
|