48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
|
|
import unittest
|
||
|
|
|
||
|
|
from fastapi.testclient import TestClient
|
||
|
|
|
||
|
|
from hpcsim.api import app
|
||
|
|
|
||
|
|
|
||
|
|
class TestAPI(unittest.TestCase):
|
||
|
|
def setUp(self):
|
||
|
|
self.client = TestClient(app)
|
||
|
|
|
||
|
|
def test_ingest_and_list(self):
|
||
|
|
payload = {
|
||
|
|
"lap": 1,
|
||
|
|
"speed": 250,
|
||
|
|
"throttle": 0.8,
|
||
|
|
"brake": 0.1,
|
||
|
|
"tire_compound": "medium",
|
||
|
|
"fuel_level": 0.6,
|
||
|
|
}
|
||
|
|
r = self.client.post("/ingest/telemetry", json=payload)
|
||
|
|
self.assertEqual(r.status_code, 200)
|
||
|
|
enriched = r.json()
|
||
|
|
self.assertIn("aero_efficiency", enriched)
|
||
|
|
|
||
|
|
list_r = self.client.get("/enriched", params={"limit": 5})
|
||
|
|
self.assertEqual(list_r.status_code, 200)
|
||
|
|
data = list_r.json()
|
||
|
|
self.assertTrue(isinstance(data, list) and len(data) >= 1)
|
||
|
|
|
||
|
|
def test_post_enriched(self):
|
||
|
|
enriched = {
|
||
|
|
"lap": 99,
|
||
|
|
"aero_efficiency": 0.8,
|
||
|
|
"tire_degradation_index": 0.5,
|
||
|
|
"ers_charge": 0.6,
|
||
|
|
"fuel_optimization_score": 0.9,
|
||
|
|
"driver_consistency": 0.95,
|
||
|
|
"weather_impact": "low",
|
||
|
|
}
|
||
|
|
r = self.client.post("/enriched", json=enriched)
|
||
|
|
self.assertEqual(r.status_code, 200)
|
||
|
|
self.assertEqual(r.json()["lap"], 99)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
unittest.main()
|