31ece2e99a
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
import os
|
|
import unittest
|
|
|
|
os.environ.setdefault("DATABASE_URL", "postgresql+psycopg://user:pass@localhost:5432/ai_ict_test")
|
|
|
|
from src.api import route_request
|
|
|
|
|
|
class ApiServerRoutingTests(unittest.TestCase):
|
|
def test_routes_health(self) -> None:
|
|
status, payload = route_request(
|
|
"/health",
|
|
{},
|
|
dependencies={
|
|
"health": lambda: {"ok": True},
|
|
"candles": lambda **kwargs: [],
|
|
"sessions": lambda **kwargs: [],
|
|
"signals": lambda **kwargs: [],
|
|
"backtests": lambda **kwargs: [],
|
|
},
|
|
)
|
|
|
|
self.assertEqual(status, 200)
|
|
self.assertEqual(payload, {"ok": True})
|
|
|
|
def test_routes_signals_query(self) -> None:
|
|
status, payload = route_request(
|
|
"/signals",
|
|
{"instrument_id": ["1"], "limit": ["2"]},
|
|
dependencies={
|
|
"health": lambda: {"ok": True},
|
|
"candles": lambda **kwargs: [],
|
|
"sessions": lambda **kwargs: [],
|
|
"signals": lambda **kwargs: [{"id": 1}, {"id": 2}],
|
|
"backtests": lambda **kwargs: [],
|
|
},
|
|
)
|
|
|
|
self.assertEqual(status, 200)
|
|
self.assertEqual(payload["items"], [{"id": 1}, {"id": 2}])
|
|
|
|
def test_routes_backtests_without_instrument_filter(self) -> None:
|
|
status, payload = route_request(
|
|
"/backtests",
|
|
{"limit": ["1"]},
|
|
dependencies={
|
|
"health": lambda: {"ok": True},
|
|
"candles": lambda **kwargs: [],
|
|
"sessions": lambda **kwargs: [],
|
|
"signals": lambda **kwargs: [],
|
|
"backtests": lambda **kwargs: [{"id": 9}],
|
|
},
|
|
)
|
|
|
|
self.assertEqual(status, 200)
|
|
self.assertEqual(payload["items"], [{"id": 9}])
|
|
|
|
def test_rejects_missing_required_query_param(self) -> None:
|
|
with self.assertRaises(ValueError):
|
|
route_request(
|
|
"/signals",
|
|
{},
|
|
dependencies={
|
|
"health": lambda: {"ok": True},
|
|
"candles": lambda **kwargs: [],
|
|
"sessions": lambda **kwargs: [],
|
|
"signals": lambda **kwargs: [],
|
|
"backtests": lambda **kwargs: [],
|
|
},
|
|
)
|
|
|
|
def test_returns_not_found_for_unknown_route(self) -> None:
|
|
status, payload = route_request(
|
|
"/unknown",
|
|
{},
|
|
dependencies={
|
|
"health": lambda: {"ok": True},
|
|
"candles": lambda **kwargs: [],
|
|
"sessions": lambda **kwargs: [],
|
|
"signals": lambda **kwargs: [],
|
|
"backtests": lambda **kwargs: [],
|
|
},
|
|
)
|
|
|
|
self.assertEqual(status, 404)
|
|
self.assertEqual(payload["error"], "not_found")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|