Query execute unit test

This commit is contained in:
Igor Radovanovic
2023-07-25 17:04:15 +02:00
parent c462b03ba0
commit 1837d3acd0

View File

@@ -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()