[Feature] Generate settings menu from pydantic model (#6489)

* Generate settings menu from pydantic model

* fix tests

* fix test

* undo changes

---------

Co-authored-by: Henrique Joaquim <henriquecjoaquim@gmail.com>
This commit is contained in:
montezdesousa
2024-06-12 10:22:29 +01:00
committed by GitHub
parent aa7bccc4ec
commit 174f2893dc
5 changed files with 309 additions and 451 deletions

View File

@@ -5,7 +5,7 @@ from unittest.mock import MagicMock, patch
import pytest
from openbb_cli.controllers.settings_controller import SettingsController
# pylint: disable=redefined-outer-name, unused-argument
# pylint: disable=redefined-outer-name, unused-argument, no-member
@pytest.fixture
@@ -14,7 +14,7 @@ def mock_session():
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
@@ -35,7 +35,7 @@ def test_call_interactive(mock_session):
)
def test_call_n_rows(input_rows, expected, mock_session):
controller = SettingsController()
args = ["--rows", str(input_rows)]
args = ["--value", str(input_rows)]
controller.call_n_rows(args)
mock_session.settings.set_item.assert_called_with(
"ALLOWED_NUMBER_OF_ROWS", expected
@@ -45,7 +45,7 @@ def test_call_n_rows(input_rows, expected, mock_session):
def test_call_n_rows_no_args_provided(mock_session):
controller = SettingsController()
controller.call_n_rows([])
mock_session.console.print.assert_called_with("Current number of rows: 20")
mock_session.console.print.assert_called_with("[info]Current value:[/info] 20")
@pytest.mark.parametrize(
@@ -56,22 +56,18 @@ def test_call_n_rows_no_args_provided(mock_session):
],
)
def test_call_timezone(timezone, valid, mock_session):
with patch(
"openbb_cli.controllers.settings_controller.is_timezone_valid",
return_value=valid,
):
controller = SettingsController()
args = ["--timezone", 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()
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 = ["--style", "dark"]
args = ["--value", "dark"]
controller.call_console_style(args)
mock_session.console.print.assert_called()
@@ -80,25 +76,25 @@ 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("Current console style: default")
mock_session.console.print.assert_called_with("[info]Current value:[/info] default")
def test_call_flair(mock_session):
controller = SettingsController()
args = ["--flair", "rocket"]
args = ["--value", "rocket"]
controller.call_flair(args)
def test_call_flair_no_args(mock_session):
mock_session.settings.FLAIR = "star"
mock_session.settings.FLAIR = "bug"
controller = SettingsController()
controller.call_flair([])
mock_session.console.print.assert_called_with("Current flair: star")
mock_session.console.print.assert_called_with("[info]Current value:[/info] bug")
def test_call_obbject_display(mock_session):
controller = SettingsController()
args = ["--number", "5"]
args = ["--value", "5"]
controller.call_obbject_display(args)
mock_session.settings.set_item.assert_called_once_with(
"N_TO_DISPLAY_OBBJECT_REGISTRY", 5
@@ -109,16 +105,14 @@ 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(
"Current number of results to display from the OBBject registry: 10"
)
mock_session.console.print.assert_called_with("[info]Current value:[/info] 10")
@pytest.mark.parametrize(
"args, expected",
[
(["--rows", "50"], 50),
(["--rows", "100"], 100),
(["--value", "50"], 50),
(["--value", "100"], 100),
([], 20),
],
)
@@ -131,4 +125,4 @@ def test_call_n_rows_v2(args, expected, mock_session):
"ALLOWED_NUMBER_OF_ROWS", expected
)
else:
mock_session.console.print.assert_called_with("Current number of rows: 20")
mock_session.console.print.assert_called_with("[info]Current value:[/info] 20")