|
|
"""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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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 |
|
|
|