car-diagnostic-agent / test_tools.py
aldsouza's picture
Fix
db47d92
Raw
History Blame Contribute Delete
4.14 kB
"""Unit tests for compact vitals tool payloads."""
from tools import (
RANGE_SNAPSHOT_CAP,
_agent_snapshot,
_cap_snapshots,
_compact_live_vitals,
_compact_snapshot,
_resolve_stored_vital_label,
)
def test_compact_snapshot_keeps_key_labels_only():
snapshot = {
"id": 1,
"ts": "2026-06-10T14:00:00+00:00",
"dtcs": ["P0171"],
"readings": {
"RPM": "850",
"Coolant temp": "92",
"Short fuel trim B1": "12.5",
"Cat temp B1S1": "400",
"Speed": "0",
},
}
compact = _compact_snapshot(snapshot)
assert compact["ts"] == snapshot["ts"]
assert compact["dtcs"] == ["P0171"]
assert compact["readings"] == {
"RPM": "850",
"Coolant temp": "92",
"Short fuel trim B1": "12.5",
"Speed": "0",
}
assert "Cat temp B1S1" not in compact["readings"]
def test_compact_snapshot_from_readings_list():
snapshot = {
"ts": "2026-06-10T14:01:00+00:00",
"dtcs": [],
"readings": [
{"label": "RPM", "value": "900"},
{"label": "MAF", "value": "3.2"},
{"label": "Throttle position", "value": "14"},
],
}
compact = _compact_snapshot(snapshot)
assert compact["readings"] == {
"RPM": "900",
"MAF": "3.2",
"Throttle position": "14",
}
def test_agent_snapshot_includes_id():
snapshot = {
"id": 42,
"ts": "2026-06-10T14:00:00+00:00",
"dtcs": [],
"readings": {"RPM": "800"},
}
out = _agent_snapshot(snapshot)
assert out["id"] == 42
assert out["readings"] == {"RPM": "800"}
def test_cap_snapshots_under_limit():
rows = [{"id": i} for i in range(10)]
capped, truncated = _cap_snapshots(rows)
assert len(capped) == 10
assert truncated is False
def test_cap_snapshots_over_limit():
rows = [{"id": i} for i in range(RANGE_SNAPSHOT_CAP + 5)]
capped, truncated = _cap_snapshots(rows)
assert len(capped) == RANGE_SNAPSHOT_CAP
assert truncated is True
def test_compact_live_vitals_strips_descriptions():
vitals = [
{"name": "RPM", "description": "Engine RPM", "value": "850"},
{"name": "MAF", "description": "Mass Air Flow", "value": "4.1"},
]
assert _compact_live_vitals(vitals) == [
{"name": "RPM", "value": "850"},
{"name": "MAF", "value": "4.1"},
]
def test_resolve_stored_vital_label():
assert _resolve_stored_vital_label("RPM") == "RPM"
assert _resolve_stored_vital_label("coolant temp") == "Coolant temp"
assert _resolve_stored_vital_label("COOLANT_TEMP") == "Coolant temp"
assert _resolve_stored_vital_label("Not A Sensor") is None
def test_get_vital_history_chronological(tmp_path, monkeypatch):
import vitals_store
db = tmp_path / "vitals.db"
monkeypatch.setenv("VITALS_DB_PATH", str(db))
vitals_store._initialized = False
vitals_store.DB_PATH = db
vitals_store.append_snapshot(
{
"readings": [{"label": "RPM", "value": "800"}],
"dtcs": [],
}
)
vitals_store.append_snapshot(
{
"readings": [{"label": "RPM", "value": "850"}],
"dtcs": [],
}
)
history = vitals_store.get_vital_history("RPM", count=10)
assert len(history) == 2
assert history[0]["value"] == "800"
assert history[1]["value"] == "850"
assert "ts" in history[0]
def test_probe_obd_vitals_shape():
from obd_connection import probe_obd_vitals
result = probe_obd_vitals()
assert "can_receive_vitals" in result
assert "port" in result
assert "probe_command" in result
assert isinstance(result["can_receive_vitals"], bool)
if __name__ == "__main__":
test_compact_snapshot_keeps_key_labels_only()
test_compact_snapshot_from_readings_list()
test_agent_snapshot_includes_id()
test_cap_snapshots_under_limit()
test_cap_snapshots_over_limit()
test_compact_live_vitals_strips_descriptions()
test_resolve_stored_vital_label()
test_probe_obd_vitals_shape()
print("OK")