mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 21:12:16 +00:00
Query execute unit test
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
# pylint: disable=redefined-outer-name
|
||||
|
||||
from dataclasses import dataclass
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from openbb_core.app.model.command_context import CommandContext
|
||||
@@ -11,6 +12,7 @@ from openbb_core.app.provider_interface import (
|
||||
StandardParams,
|
||||
)
|
||||
from openbb_core.app.query import Query
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
@@ -73,7 +75,65 @@ def test_filter_extra_params_wrong_param(query):
|
||||
assert not query.filter_extra_params(extra_params, "fmp")
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="TODO: see how to properly mock the execute method")
|
||||
def test_execute(query):
|
||||
"""Test execute."""
|
||||
assert query.execute()
|
||||
@pytest.fixture
|
||||
def mock_registry():
|
||||
"""Mock registry."""
|
||||
with patch(
|
||||
"openbb_core.app.provider_interface.get_provider_interface"
|
||||
) as mock_get_provider_interface:
|
||||
mock_registry = MagicMock()
|
||||
mock_get_provider_interface.return_value.build_registry.return_value = (
|
||||
mock_registry
|
||||
)
|
||||
yield mock_registry
|
||||
|
||||
|
||||
def create_mock_query():
|
||||
"""Mock query."""
|
||||
|
||||
class StockEOD:
|
||||
"""Mock StockEOD class."""
|
||||
|
||||
start_date = "2020-01-01"
|
||||
end_date = "2020-01-05"
|
||||
symbol = "AAPL"
|
||||
|
||||
return StockEOD()
|
||||
|
||||
|
||||
def create_mock_extra_params():
|
||||
"""Mock ExtraParams dataclass."""
|
||||
|
||||
@dataclass
|
||||
class StockEOD:
|
||||
"""Mock ExtraParams dataclass."""
|
||||
|
||||
sort: str = "desc"
|
||||
|
||||
return StockEOD()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def query_instance():
|
||||
"""Set up query."""
|
||||
standard_params = create_mock_query()
|
||||
extra_params = create_mock_extra_params()
|
||||
|
||||
cc = CommandContext()
|
||||
setattr(cc.user_settings.credentials, "fmp_api_key", "1234")
|
||||
|
||||
return Query(
|
||||
cc=cc,
|
||||
provider_choices=ProviderChoices(provider="fmp"),
|
||||
standard_params=standard_params,
|
||||
extra_params=extra_params,
|
||||
)
|
||||
|
||||
|
||||
def test_execute_method_fake_credentials(query_instance, mock_registry):
|
||||
"""Test execute method without setting credentials."""
|
||||
mock_fetch_result = BaseModel() # Replace with an actual instance of BaseModel
|
||||
mock_registry.fetch.return_value = mock_fetch_result
|
||||
|
||||
with pytest.raises(Exception):
|
||||
query_instance.execute()
|
||||
|
||||
Reference in New Issue
Block a user