| monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x1203095e0>
|
|
|
| def test_reason_live_level_events_debounces_already_posted(monkeypatch):
|
| # a committing event already BROADCAST (discord_posted) is not re-reasoned/re-posted (idempotent)
|
| monkeypatch.setattr(TR.settings, "TIDE_REASONING_LIVE_LEVEL_EVENTS_ENABLED", True, raising=False)
|
| monkeypatch.setattr(TR, "_live_enabled", lambda: True)
|
| ev = {"kind": "liquidation_below_poc", "et": "10:40:36", "direction": "up", "level": "intraday_poc",
|
| "level_value": 0.062, "breadth": -0.276}
|
| monkeypatch.setattr("rtrader.services.tide_level_events.committing_level_events", lambda *a, **k: [ev])
|
| monkeypatch.setattr("rtrader.services.tide_wave_dashboard.tide_series", lambda *a, **k: {"points": []})
|
| monkeypatch.setattr("rtrader.services.tide_wave_dashboard.prev_day_tide_levels", lambda *a, **k: {})
|
| monkeypatch.setattr("rtrader.services.tide_wave_dashboard.premarket_tide_read", lambda *a, **k: None)
|
| monkeypatch.setattr(TR, "load_reasoning",
|
| lambda *a, **k: [{"event_et": "10:40:36", "kind": "liquidation_below_poc",
|
| "discord_posted": True}])
|
| llm = {"n": 0}
|
| monkeypatch.setattr(TR, "call_llm", lambda *a, **k: llm.__setitem__("n", llm["n"] + 1) or "")
|
| posts = []
|
| monkeypatch.setattr(TR, "_send_discord", lambda m: posts.append(m))
|
| out = TR.reason_live_level_events("2026-07-10", now=datetime(2026, 7, 10, 14, 0, tzinfo=TR.ET))
|
| > assert out == {"asked": 0, "reasoned": 0} and llm["n"] == 0 and posts == []
|
| E AssertionError: assert ({'asked': 0, ...'reasoned': 0} == {'asked': 0, 'reasoned': 0}
|
| E
|
| E Omitting 2 identical items, use -vv to show
|
| E Left contains 1 more item:
|
| E {'labeled_skipped': 0}
|
| E
|
| E Full diff:
|
| E {...
|
| E
|
| E ...Full output truncated (4 lines hidden), use '-vv' to show)
|
|
|
| tests/services/test_tide_etf_reasoning.py:1002: AssertionError
|