monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x126e091f0> def test_indicator_cli_divergence(monkeypatch): monkeypatch.setattr("rtrader.cli.indicator_cli.CMFService", StubCMFService) divergence_payload = { "triggered": True, "title": "Bullish Divergence (Extreme)", "pattern": "Bullish Divergence", "direction": "bullish", "strength": "extreme", "score": 100.0, "confidence": 0.93, "confidence_label": "Extreme • 93%", "priority": "critical_buy", "price_change_pct": -9.3, "cmf": 0.22, "summary_text": "-9.3% last hour • CMF +0.22", "recommendation": "Set breakout trigger at resistance and buy on confirmation.", "historical": { "win_rate": 0.875, "average_move": 0.08, "dates": ["2025-09-30", "2025-09-25"], }, } def _stub_summary(*_, **__): return SimpleNamespace( divergence=divergence_payload, interpretation={"divergence": divergence_payload}, price_change_pct=-9.3, cmf=0.22, ) monkeypatch.setattr( "rtrader.cli.indicator_cli.compute_order_flow_summary", _stub_summary, ) runner = CliRunner() result = runner.invoke( indicator_group, [ "test", "--date", "2025-10-10", "--type", "divergence", "--symbol", "OSCR", ], ) assert result.exit_code == 0, result.output assert "OSCR" in result.output > assert "Bullish Divergence (Extreme)" in result.output E assert 'Bullish Divergence (Extreme)' in 'OSCR: divergence analysis failed – [TypeError] can only concatenate str (not "datetime.timedelta") to str [host=mini-turtle.local pid=9191 pm2=ranking-worker]\nNo divergence signals detected.\n' E + where 'OSCR: divergence analysis failed – [TypeError] can only concatenate str (not "datetime.timedelta") to str [host=mini-turtle.local pid=9191 pm2=ranking-worker]\nNo divergence signals detected.\n' = .output tests/cli/test_indicator_cli.py:184: AssertionError