Add device charge-all route, last-charged column, and CSRF fix for quick-assign
This commit is contained in:
@@ -376,6 +376,29 @@ def test_dashboard_quick_assign_full_device_blocked(client):
|
||||
assert b"full" in resp.data.lower()
|
||||
|
||||
|
||||
def test_quick_assign_reassign_battery(client):
|
||||
"""Quick-assign moves a battery that is already installed in another device."""
|
||||
client.post("/device/add", data={"name": "Box A", "battery_slots": "2", "battery_size": "AA"})
|
||||
client.post("/device/add", data={"name": "Box B", "battery_slots": "2", "battery_size": "AA"})
|
||||
client.post("/battery/add", data={"brand": "Eneloop", "count": "1"})
|
||||
client.post("/battery/1/assign", data={"device_id": "1"}) # install into Box A
|
||||
resp = client.post("/battery/1/assign", data={"device_id": "2"},
|
||||
follow_redirects=True)
|
||||
assert resp.status_code == 200
|
||||
assert b"Box B" in resp.data
|
||||
|
||||
|
||||
def test_quick_assign_retired_battery_blocked(client):
|
||||
"""battery_assign POST for a retired battery is blocked."""
|
||||
client.post("/device/add", data={"name": "Box", "battery_slots": "2", "battery_size": "AA"})
|
||||
client.post("/battery/add", data={"brand": "Eneloop", "count": "1"})
|
||||
client.post("/battery/1/retire")
|
||||
resp = client.post("/battery/1/assign", data={"device_id": "1"},
|
||||
follow_redirects=True)
|
||||
assert resp.status_code == 200
|
||||
assert b"retired" in resp.data.lower()
|
||||
|
||||
|
||||
# ------------------------------------------------------------------ #
|
||||
# Device — install-one (specific battery)
|
||||
# ------------------------------------------------------------------ #
|
||||
@@ -836,3 +859,29 @@ def test_device_install_batch(seeded_client):
|
||||
assert resp.status_code == 200
|
||||
assert b"Installed 2" in resp.data
|
||||
assert b"2 / 2" in resp.data
|
||||
|
||||
|
||||
def test_device_charge_all(seeded_client):
|
||||
client = seeded_client
|
||||
# install battery 1 into device 1
|
||||
client.post("/device/1/install-one", data={"battery_id": "1"})
|
||||
resp = client.post(
|
||||
"/device/1/charge-all",
|
||||
data={"charged_date": "2025-01-01", "increment_cycles": "1"},
|
||||
follow_redirects=True,
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
assert b"Logged charge for 1 battery" in resp.data
|
||||
assert b"+cycles" in resp.data
|
||||
|
||||
|
||||
def test_device_charge_all_no_installed(seeded_client):
|
||||
client = seeded_client
|
||||
# device 1 has no batteries installed yet
|
||||
resp = client.post(
|
||||
"/device/1/charge-all",
|
||||
data={"charged_date": "2025-01-01"},
|
||||
follow_redirects=True,
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
assert b"No installed batteries" in resp.data
|
||||
|
||||
Reference in New Issue
Block a user