OpenBB / cli /tests /test_argparse_translator_obbject_registry.py
CatPtain's picture
Upload 70 files
b93364a verified
"""Test OBBject Registry."""
from unittest.mock import Mock
import pytest
from openbb_cli.argparse_translator.obbject_registry import Registry
from openbb_core.app.model.obbject import OBBject
# pylint: disable=redefined-outer-name, protected-access
@pytest.fixture
def registry():
"""Fixture to create a Registry instance for testing."""
return Registry()
@pytest.fixture
def mock_obbject():
"""Fixture to create a mock OBBject for testing."""
class MockModel:
"""Mock model for testing."""
def __init__(self, value):
self.mock_value = value
self._model_json_schema = "mock_json_schema"
def model_json_schema(self):
return self._model_json_schema
obb = Mock(spec=OBBject)
obb.id = "123"
obb.provider = "test_provider"
obb.extra = {"command": "test_command"}
obb._route = "/test/route"
obb._standard_params = Mock()
obb._standard_params = {}
obb.results = [MockModel(1), MockModel(2)]
return obb
def test_listing_all_obbjects(registry, mock_obbject):
"""Test listing all obbjects with additional properties."""
registry.register(mock_obbject)
all_obbjects = registry.all
assert len(all_obbjects) == 1
assert all_obbjects[0]["command"] == "test_command"
assert all_obbjects[0]["provider"] == "test_provider"
def test_registry_initialization(registry):
"""Test the Registry is initialized correctly."""
assert registry.obbjects == []
def test_register_new_obbject(registry, mock_obbject):
"""Test registering a new OBBject."""
registry.register(mock_obbject)
assert mock_obbject in registry.obbjects
def test_register_duplicate_obbject(registry, mock_obbject):
"""Test that duplicate OBBjects are not added."""
registry.register(mock_obbject)
registry.register(mock_obbject)
assert len(registry.obbjects) == 1
def test_get_obbject_by_index(registry, mock_obbject):
"""Test retrieving an obbject by its index."""
registry.register(mock_obbject)
retrieved = registry.get(0)
assert retrieved == mock_obbject
def test_remove_obbject_by_index(registry, mock_obbject):
"""Test removing an obbject by index."""
registry.register(mock_obbject)
registry.remove(0)
assert mock_obbject not in registry.obbjects
def test_remove_last_obbject_by_default(registry, mock_obbject):
"""Test removing the last obbject by default."""
registry.register(mock_obbject)
registry.remove()
assert not registry.obbjects