build 042: remove MarketPriceCache compatibility facade
This commit is contained in:
@@ -12,10 +12,14 @@ import pytest
|
||||
import src.integrations.exchange.service as service_module
|
||||
from src.core.config import Settings
|
||||
from src.integrations.exchange.exceptions import ExchangeError
|
||||
from src.integrations.exchange.market_cache import MarketPriceCache
|
||||
from src.integrations.exchange.service import ExchangeService
|
||||
from src.market_data.acquisition.models.quote import Quote
|
||||
from src.storage.quote_store import InMemoryQuoteStore
|
||||
import src.storage.quote_store as quote_store_module
|
||||
from src.storage.quote_store import (
|
||||
InMemoryQuoteStore,
|
||||
QUOTE_RUNTIME_SOURCE_NAME,
|
||||
get_quote_store,
|
||||
)
|
||||
|
||||
|
||||
def _service(*, exchange_enabled: bool = True) -> ExchangeService:
|
||||
@@ -46,11 +50,13 @@ def _quote(*, age_seconds: float = 0.0) -> Quote:
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def reset_store():
|
||||
original = MarketPriceCache._store
|
||||
MarketPriceCache._store = InMemoryQuoteStore()
|
||||
def reset_store(monkeypatch: pytest.MonkeyPatch):
|
||||
monkeypatch.setattr(
|
||||
quote_store_module,
|
||||
"_SHARED_QUOTE_STORE",
|
||||
InMemoryQuoteStore(),
|
||||
)
|
||||
yield
|
||||
MarketPriceCache._store = original
|
||||
|
||||
|
||||
def test_get_quote_returns_fresh_cached_identity(
|
||||
@@ -58,7 +64,8 @@ def test_get_quote_returns_fresh_cached_identity(
|
||||
) -> None:
|
||||
service = _service()
|
||||
quote = _quote()
|
||||
MarketPriceCache.set_quote(quote, runtime_key="auto")
|
||||
get_quote_store().set(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,quote, runtime_key="auto")
|
||||
monkeypatch.setattr(
|
||||
service,
|
||||
"validate_symbol",
|
||||
@@ -83,7 +90,8 @@ def test_get_quote_refreshes_stale_quote(
|
||||
service = _service()
|
||||
stale = _quote(age_seconds=10)
|
||||
fresh = _quote()
|
||||
MarketPriceCache.set_quote(stale, runtime_key="auto")
|
||||
get_quote_store().set(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,stale, runtime_key="auto")
|
||||
monkeypatch.setattr(
|
||||
service,
|
||||
"validate_symbol",
|
||||
@@ -98,7 +106,8 @@ def test_get_quote_refreshes_stale_quote(
|
||||
result = service.get_quote(fresh.symbol, runtime_key="auto")
|
||||
|
||||
assert result is fresh
|
||||
assert MarketPriceCache.get_quote(fresh.symbol, runtime_key="auto") is fresh
|
||||
assert get_quote_store().get(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,fresh.symbol, runtime_key="auto") is fresh
|
||||
|
||||
|
||||
def test_get_quote_wraps_acquisition_error(
|
||||
@@ -125,7 +134,8 @@ def test_refresh_quote_cache_forces_fresh_quote_and_preserves_identity(
|
||||
service = _service()
|
||||
cached = _quote()
|
||||
fresh = _quote()
|
||||
MarketPriceCache.set_quote(cached, runtime_key="auto")
|
||||
get_quote_store().set(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,cached, runtime_key="auto")
|
||||
requested_symbols: list[str] = []
|
||||
|
||||
monkeypatch.setattr(
|
||||
@@ -147,7 +157,8 @@ def test_refresh_quote_cache_forces_fresh_quote_and_preserves_identity(
|
||||
assert requested_symbols == [" btc/usd_leverage "]
|
||||
assert result is fresh
|
||||
assert result is not cached
|
||||
assert MarketPriceCache.get_quote(fresh.symbol, runtime_key="auto") is fresh
|
||||
assert get_quote_store().get(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,fresh.symbol, runtime_key="auto") is fresh
|
||||
|
||||
|
||||
def test_refresh_quote_cache_uses_default_runtime_key(
|
||||
@@ -169,7 +180,8 @@ def test_refresh_quote_cache_uses_default_runtime_key(
|
||||
result = service.refresh_quote_cache(fresh.symbol)
|
||||
|
||||
assert result is fresh
|
||||
assert MarketPriceCache.get_quote(fresh.symbol, runtime_key="auto") is fresh
|
||||
assert get_quote_store().get(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,fresh.symbol, runtime_key="auto") is fresh
|
||||
|
||||
|
||||
def test_refresh_quote_cache_normalizes_runtime_key(
|
||||
@@ -195,7 +207,8 @@ def test_refresh_quote_cache_normalizes_runtime_key(
|
||||
|
||||
assert result is fresh
|
||||
assert (
|
||||
MarketPriceCache.get_quote(
|
||||
get_quote_store().get(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,
|
||||
fresh.symbol,
|
||||
runtime_key="debug_auto",
|
||||
)
|
||||
@@ -234,7 +247,8 @@ def test_refresh_quote_cache_does_not_update_cache_on_acquisition_error(
|
||||
service = _service()
|
||||
cached = _quote()
|
||||
original = RuntimeError("unavailable")
|
||||
MarketPriceCache.set_quote(cached, runtime_key="auto")
|
||||
get_quote_store().set(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,cached, runtime_key="auto")
|
||||
monkeypatch.setattr(
|
||||
service,
|
||||
"validate_symbol",
|
||||
@@ -255,7 +269,8 @@ def test_refresh_quote_cache_does_not_update_cache_on_acquisition_error(
|
||||
service.refresh_quote_cache(cached.symbol, runtime_key="auto")
|
||||
|
||||
assert exc_info.value.__cause__ is original
|
||||
assert MarketPriceCache.get_quote(cached.symbol, runtime_key="auto") is cached
|
||||
assert get_quote_store().get(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,cached.symbol, runtime_key="auto") is cached
|
||||
|
||||
|
||||
def test_refresh_quote_cache_uses_and_stores_mock_quote(
|
||||
@@ -286,7 +301,8 @@ def test_refresh_quote_cache_uses_and_stores_mock_quote(
|
||||
|
||||
assert result is mock
|
||||
assert (
|
||||
MarketPriceCache.get_quote(
|
||||
get_quote_store().get(
|
||||
QUOTE_RUNTIME_SOURCE_NAME,
|
||||
mock.symbol,
|
||||
runtime_key="debug_auto",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user