Files
OpenBB/cli/tests/test_models_settings.py
Danglewood 9a30186174 [V5] CLI 2.0 - Pluggable Backends, Non-TTY Default, HTTP Dispatcher, Spec Files + Codegen (#7433)
* stash some changes

* add more robust testing

* mypy

* point PR at V5

* introduce spec file

* codespell

* test fix

* fix workflow environment setup

* fix workflow environment setup

* fix workflow environment setup

* add pyyaml to dependencies

* split lint jobs

* fix workflow environment setup

* fix workflow environment setup

* workflow env setup

* workflow env setup

* clean up code comments

* add auth hook entrypoints

* codespell

* add codegen feature

* codespell

* move _unpack into dispatchers for consistency with codegen packages

* surface nested models in the response

* fix missing coverage in CI

* socrata updates

* test fix

* detect plotly output

* add --include and --exclude flags from generate-extension command

* cap test matrix at python 3.14

* no useless comments

* platform controller command description split

* merge URL overloads from path params

* exclude none and unset from model dump

---------

Co-authored-by: deeleeramone <>
Co-authored-by: Copilot <copilot@github.com>
2026-06-01 19:14:38 +03:00

96 lines
3.2 KiB
Python

"""Test the Models Settings module."""
from unittest.mock import mock_open, patch
from openbb_cli.models.settings import Settings
def test_default_values():
"""Test the default values of the settings model."""
fields = Settings.model_fields
assert fields["TEST_MODE"].default is False
assert fields["DEBUG_MODE"].default is False
assert fields["DEV_BACKEND"].default is False
assert fields["FILE_OVERWRITE"].default is False
assert fields["SHOW_VERSION"].default is True
assert fields["USE_INTERACTIVE_DF"].default is False
assert fields["USE_CLEAR_AFTER_CMD"].default is False
assert fields["USE_DATETIME"].default is True
assert fields["USE_PROMPT_TOOLKIT"].default is True
assert fields["ENABLE_EXIT_AUTO_HELP"].default is True
assert fields["ENABLE_RICH_PANEL"].default is True
assert fields["TOOLBAR_HINT"].default is True
assert fields["SHOW_MSG_OBBJECT_REGISTRY"].default is False
assert fields["TIMEZONE"].default == "America/New_York"
assert fields["FLAIR"].default == ":openbb"
assert fields["PREVIOUS_USE"].default is False
assert fields["N_TO_KEEP_OBBJECT_REGISTRY"].default == 10
assert fields["N_TO_DISPLAY_OBBJECT_REGISTRY"].default == 5
assert fields["RICH_STYLE"].default == "dark"
assert fields["ALLOWED_NUMBER_OF_ROWS"].default == 20
assert fields["ALLOWED_NUMBER_OF_COLUMNS"].default == 5
def test_repr():
"""Test the __repr__ method of the settings model."""
settings = Settings()
repr_str = settings.__repr__()
assert "Settings\n\n" in repr_str
@patch(
"openbb_cli.models.settings.dotenv_values",
return_value={"OPENBB_TEST_MODE": "True", "OPENBB_VERSION": "2.0.0"},
)
def test_from_env(mock_dotenv_values):
"""Test loading settings from environment variables."""
settings = Settings.from_env({})
assert settings["TEST_MODE"] == "True"
assert settings["VERSION"] == "2.0.0"
@patch("openbb_cli.models.settings.set_key")
@patch(
"openbb_cli.models.settings.open",
new_callable=mock_open,
read_data="TEST_MODE=False\n",
)
def test_set_item(mock_file, mock_set_key):
"""Test setting an item and updating the .env file."""
settings = Settings()
settings.set_item("TEST_MODE", True)
assert settings.TEST_MODE is True
from openbb_cli.models.settings import OutputMode
def test_output_mode_values():
"""Test OutputMode enum contains all expected values."""
assert OutputMode.rich == "rich"
assert OutputMode.json == "json"
assert OutputMode.tsv == "tsv"
assert OutputMode.html == "html"
def test_output_mode_is_string():
"""Test OutputMode members are also strings."""
assert isinstance(OutputMode.rich, str)
def test_output_mode_default():
"""V5 default flip: ``tsv`` is line-oriented, ANSI-free, pipe-safe."""
assert Settings.model_fields["OUTPUT_MODE"].default == "tsv"
def test_allowed_number_of_rows_default():
"""Test ALLOWED_NUMBER_OF_ROWS default."""
settings = Settings()
assert settings.ALLOWED_NUMBER_OF_ROWS == 20
def test_allowed_number_of_columns_default():
"""Test ALLOWED_NUMBER_OF_COLUMNS default."""
settings = Settings()
assert settings.ALLOWED_NUMBER_OF_COLUMNS == 5