Add Pico detail screen view models

This commit is contained in:
2026-06-03 02:46:18 -06:00
parent f5b6ec64cf
commit 93c677a3e1
2 changed files with 175 additions and 0 deletions
+101
View File
@@ -482,3 +482,104 @@ def test_dashboard_view_model_handles_missing_values():
assert vm["battery"]["voltage"] == "--"
assert vm["fridge"]["zone_1"] == "--"
def test_battery_view_model():
from ui.detail_view_models import BatteryViewModel
state = AppState()
state.update_from_status({
"battery": {
"soc": 82,
"voltage": 13.2,
"current": -6.4,
"remaining_ah": 82.0,
"runtime_hours": 12.0,
"temperature_f": 76.0,
}
})
vm = BatteryViewModel(state).as_dict()
assert vm["soc"] == "82%"
assert vm["voltage"] == "13.2V"
assert vm["current"] == "-6.4A"
assert vm["remaining_ah"] == "82.0Ah"
assert vm["runtime_hours"] == "12.0 hr"
assert vm["temperature_f"] == "76.0°F"
def test_temps_view_model():
from ui.detail_view_models import TempsViewModel
state = AppState()
state.update_from_status({
"temps": {
"fridge_zone_1": 34.5,
"fridge_zone_2": 36.0,
"rear_seat": 71.2,
"outside": None,
},
"sensor_health": {
"fridge_zone_1": True,
"fridge_zone_2": True,
"rear_seat": True,
"outside": False,
}
})
rows = TempsViewModel(state).as_list()
assert rows[0]["label"] == "Fridge Zone 1"
assert rows[0]["temperature"] == "34.5°F"
assert rows[0]["status"] == "OK"
assert rows[3]["label"] == "Outside Air"
assert rows[3]["temperature"] == "--"
assert rows[3]["status"] == "FAULT"
def test_power_view_model():
from ui.detail_view_models import PowerViewModel
state = AppState()
state.update_from_status({
"relays": {
"starlink": False,
"fridge": True,
}
})
vm = PowerViewModel(state).as_dict()
assert vm["starlink"] == "OFF"
assert vm["fridge"] == "ON"
def test_system_view_model():
from ui.detail_view_models import SystemViewModel
state = AppState()
state.update_from_status({
"sensor_health": {
"fridge_zone_1": True,
"fridge_zone_2": True,
"rear_seat": False,
"outside": True,
},
"vehicle": {
"ignition_on": False,
},
"network": {
"uart_connected": True,
"wifi_enabled": True,
}
})
vm = SystemViewModel(state).as_dict()
assert vm["esp32"] == "Online"
assert vm["uart"] == "Connected"
assert vm["wifi_api"] == "Available"
assert vm["sensors"] == "3 / 4 OK"
assert vm["ignition"] == "Off"