import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) import unittest import deckit.modules.llm as llm class Down(unittest.TestCase): def test_offline_when_dashboard_down(self): def boom(url, timeout=2): raise OSError("refused") st = llm.make({"llm": {"url": "http://x"}, "fetch": boom}).state() self.assertTrue(st["offline"]) class Up(unittest.TestCase): def test_aggregates_opencode_and_ignores_other_programs(self): data = {"/api/claude_limits": [{"context_pct": 12}], "/api/claude_session": {"session": {"models": [{"model": "claude-opus-4"}]}}, "/api/summary": [ {"program": "opencode", "provider": "deepseek", "model": "v4", "total_cost_usd": 1.5, "tokens": 1000, "calls": 3}, {"program": "opencode", "provider": "together", "model": "qwen", "total_cost_usd": 0.5, "tokens": 500, "calls": 1}, {"program": "assistant", "provider": "x", "model": "y", "total_cost_usd": 9.0, "tokens": 9999, "calls": 9}, ], "/api/last_session": {"sessions": [ {"program": "opencode", "rows": [ {"provider": "together", "model": "qwen", "calls": 1}, {"provider": "deepseek", "model": "v4", "calls": 3}, ]}, ]}} st = llm.make({"llm": {"url": "http://x"}, "fetch": lambda u, timeout=2: data[u]}).state() self.assertFalse(st["offline"]) self.assertEqual(st["claude"]["context_pct"], 12) self.assertEqual(st["claude"]["model"], "claude-opus-4") self.assertEqual(st["opencode"]["cost"], 2.0) self.assertEqual(st["opencode"]["tokens"], 1500) self.assertEqual(st["opencode"]["calls"], 4) self.assertEqual(st["opencode"]["model"], "v4") def test_handles_the_real_latest_shape(self): data = {"/api/claude_limits": {"latest": {"context_pct": 42, "five_hour_pct": 10}}, "/api/claude_session": {"session": None}, "/api/summary": [], "/api/last_session": {"sessions": []}} st = llm.make({"llm": {"url": "http://x"}, "fetch": lambda u, timeout=2: data[u]}).state() self.assertEqual(st["claude"]["context_pct"], 42) self.assertEqual(st["claude"]["five_hour_pct"], 10) self.assertIsNone(st["claude"]["model"]) self.assertIsNone(st["opencode"]["model"]) if __name__ == "__main__": unittest.main()