Add required battery_size to devices, filter install panels by size
This commit is contained in:
@@ -62,7 +62,7 @@ def test_ha_disabled_dashboard_no_ha_column(client):
|
||||
|
||||
|
||||
def test_ha_disabled_device_no_ha_field(client):
|
||||
client.post("/device/add", data={"name": "Dev A", "battery_slots": "1"})
|
||||
client.post("/device/add", data={"name": "Dev A", "battery_slots": "1", "battery_size": "AA"})
|
||||
resp = client.get("/device/1")
|
||||
assert resp.status_code == 200
|
||||
assert b"ha_entity_id" not in resp.data
|
||||
@@ -153,7 +153,7 @@ def _make_session_factory(ha_app):
|
||||
|
||||
def test_poll_updates_installed_batteries(ha_app, ha_client_f):
|
||||
"""Installed battery in a device with ha_entity_id gets battery_percentage updated."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev A", "battery_slots": "2"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev A", "battery_slots": "2", "battery_size": "AA"})
|
||||
ha_client_f.post("/battery/add", data={"brand": "X", "count": "1"})
|
||||
# Assign battery to device
|
||||
ha_client_f.post("/battery/1/assign", data={"device_id": "1"})
|
||||
@@ -184,7 +184,7 @@ def test_poll_updates_installed_batteries(ha_app, ha_client_f):
|
||||
|
||||
def test_poll_skips_uninstalled_batteries(ha_app, ha_client_f):
|
||||
"""Batteries that are available (not installed) are not updated by the poller."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev B", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev B", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/battery/add", data={"brand": "X", "count": "1"})
|
||||
# Set entity on device but do NOT install the battery
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
@@ -211,7 +211,7 @@ def test_poll_skips_uninstalled_batteries(ha_app, ha_client_f):
|
||||
|
||||
def test_poll_skips_devices_without_entity_id(ha_app, ha_client_f):
|
||||
"""Devices with no ha_entity_id must never reach get_state."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev C", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev C", "battery_slots": "1", "battery_size": "AA"})
|
||||
|
||||
from ha_client import HomeAssistantClient
|
||||
from ha_poller import HaPoller
|
||||
@@ -228,7 +228,7 @@ def test_poll_skips_devices_without_entity_id(ha_app, ha_client_f):
|
||||
|
||||
def test_poll_handles_api_error_gracefully(ha_app, ha_client_f):
|
||||
"""When get_state returns None, no exception is raised and percentage stays None."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev D", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev D", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/battery/add", data={"brand": "X", "count": "1"})
|
||||
ha_client_f.post("/battery/1/assign", data={"device_id": "1"})
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
@@ -343,14 +343,14 @@ def test_retired_battery_excluded_from_needs_attention_section(ha_app, ha_client
|
||||
|
||||
|
||||
def test_device_detail_shows_ha_field(ha_client_f):
|
||||
ha_client_f.post("/device/add", data={"name": "Dev E", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev E", "battery_slots": "1", "battery_size": "AA"})
|
||||
resp = ha_client_f.get("/device/1")
|
||||
assert resp.status_code == 200
|
||||
assert b"ha_entity_id" in resp.data
|
||||
|
||||
|
||||
def test_edit_device_ha_entity_id_saves(ha_client_f):
|
||||
ha_client_f.post("/device/add", data={"name": "Dev F", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev F", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
"name": "Dev F", "battery_slots": "1", "ha_entity_id": "sensor.my_remote"
|
||||
})
|
||||
@@ -359,7 +359,7 @@ def test_edit_device_ha_entity_id_saves(ha_client_f):
|
||||
|
||||
|
||||
def test_edit_device_ha_entity_id_clear(ha_client_f):
|
||||
ha_client_f.post("/device/add", data={"name": "Dev G", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev G", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
"name": "Dev G", "battery_slots": "1", "ha_entity_id": "sensor.foo"
|
||||
})
|
||||
@@ -415,7 +415,7 @@ def test_manual_battery_percentage_edit(ha_client_f):
|
||||
|
||||
def test_poll_skips_update_when_percentage_unchanged(ha_app, ha_client_f):
|
||||
"""No write and no pct_log entry when the polled value matches the stored value."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev NoCh", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev NoCh", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/battery/add", data={"brand": "X", "count": "1"})
|
||||
ha_client_f.post("/battery/1/assign", data={"device_id": "1"})
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
@@ -446,7 +446,7 @@ def test_poll_skips_update_when_percentage_unchanged(ha_app, ha_client_f):
|
||||
|
||||
def test_poll_creates_pct_log_on_change(ha_app, ha_client_f):
|
||||
"""A pct_log entry with source='poll' is written when the value changes."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev Chg", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev Chg", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/battery/add", data={"brand": "X", "count": "1"})
|
||||
ha_client_f.post("/battery/1/assign", data={"device_id": "1"})
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
@@ -519,7 +519,7 @@ def test_manual_edit_no_log_when_unchanged(ha_client_f):
|
||||
|
||||
def test_device_detail_shows_live_pct(ha_app, ha_client_f):
|
||||
"""Opening a device page fetches live % from HA and displays it."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev Live", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev Live", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
"name": "Dev Live", "battery_slots": "1", "ha_entity_id": "sensor.live_test"
|
||||
})
|
||||
@@ -537,7 +537,7 @@ def test_device_detail_shows_live_pct(ha_app, ha_client_f):
|
||||
|
||||
def test_device_detail_updates_battery_on_load(ha_app, ha_client_f):
|
||||
"""Battery percentage is updated (with pct_log) when device page is loaded and value changed."""
|
||||
ha_client_f.post("/device/add", data={"name": "Dev Update", "battery_slots": "1"})
|
||||
ha_client_f.post("/device/add", data={"name": "Dev Update", "battery_slots": "1", "battery_size": "AA"})
|
||||
ha_client_f.post("/battery/add", data={"brand": "X", "count": "1"})
|
||||
ha_client_f.post("/battery/1/assign", data={"device_id": "1"})
|
||||
ha_client_f.post("/device/1/edit", data={
|
||||
|
||||
Reference in New Issue
Block a user