import time import pytest from app.services import market_analyzer as ma @pytest.fixture(autouse=True) def _restore(): saved = dict(ma._market_regime_cache) yield ma._market_regime_cache.update(saved) @pytest.mark.asyncio async def test_offhours_uses_last_intraday_regime(monkeypatch): monkeypatch.setattr(ma, "is_market_open", lambda: False) ma._market_regime_cache.update(result={"regime": "bullish", "regime_200d": "bull"}, ts=time.monotonic()) r = await ma.check_market_regime() assert r["regime_200d"] == "bull" assert r["position_multiplier"] == 0.5 @pytest.mark.asyncio async def test_offhours_stale_or_missing_falls_back_bear(monkeypatch): monkeypatch.setattr(ma, "is_market_open", lambda: False) ma._market_regime_cache.update(result=None, ts=0.0) assert (await ma.check_market_regime())["regime_200d"] == "bear" ma._market_regime_cache.update( result={"regime_200d": "bull"}, ts=time.monotonic() - ma._OFFHOURS_REGIME_MAX_AGE_SEC - 10) assert (await ma.check_market_regime())["regime_200d"] == "bear"