test(meters): cover checkpoint C1 fix workflows
This commit is contained in:
parent
de46775c22
commit
b836aaa91f
1 changed files with 102 additions and 0 deletions
|
|
@ -84,3 +84,105 @@ def test_replacement_keeps_old_history_and_links_new_meter(app, admin_user):
|
||||||
assert old.is_active is False
|
assert old.is_active is False
|
||||||
assert new.replaces_meter_id == old.id
|
assert new.replaces_meter_id == old.id
|
||||||
assert MeterReading.query.filter_by(meter_id=old.id).count() == 1
|
assert MeterReading.query.filter_by(meter_id=old.id).count() == 1
|
||||||
|
|
||||||
|
|
||||||
|
def _edit_payload(meter, building, **extra):
|
||||||
|
payload = {
|
||||||
|
"name": meter.name,
|
||||||
|
"meter_type": meter.meter_type,
|
||||||
|
"unit": meter.unit,
|
||||||
|
"scope_type": "building",
|
||||||
|
"scope_id": str(building.id),
|
||||||
|
"parent_id": "",
|
||||||
|
}
|
||||||
|
payload.update(extra)
|
||||||
|
return payload
|
||||||
|
|
||||||
|
|
||||||
|
def test_meter_edit_http_changes_and_removes_parent(app, authenticated_client):
|
||||||
|
with app.app_context():
|
||||||
|
_, building, _ = _equipment()
|
||||||
|
root = create_meter(name="TEST_UI_C1_FIX_ROOT", building_id=building.id)
|
||||||
|
child = create_meter(name="TEST_UI_C1_FIX_CHILD", building_id=building.id)
|
||||||
|
response = authenticated_client.get(f"/meters/{child.id}/edit")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert b"Compteur parent" in response.data
|
||||||
|
|
||||||
|
response = authenticated_client.post(
|
||||||
|
f"/meters/{child.id}/edit",
|
||||||
|
data=_edit_payload(child, building, parent_id=str(root.id)),
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
db.session.refresh(child)
|
||||||
|
assert child.parent_id == root.id
|
||||||
|
|
||||||
|
response = authenticated_client.post(
|
||||||
|
f"/meters/{child.id}/edit",
|
||||||
|
data=_edit_payload(child, building, parent_id=""),
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
db.session.refresh(child)
|
||||||
|
assert child.parent_id is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_meter_edit_http_rejects_self_parent_and_deep_cycle(app, authenticated_client):
|
||||||
|
with app.app_context():
|
||||||
|
_, building, _ = _equipment()
|
||||||
|
root = create_meter(name="TEST_UI_C1_FIX_CYCLE_ROOT", building_id=building.id)
|
||||||
|
child = create_meter(name="TEST_UI_C1_FIX_CYCLE_CHILD", building_id=building.id, parent=root)
|
||||||
|
grandchild = create_meter(name="TEST_UI_C1_FIX_CYCLE_GRANDCHILD", building_id=building.id, parent=child)
|
||||||
|
|
||||||
|
response = authenticated_client.post(
|
||||||
|
f"/meters/{root.id}/edit",
|
||||||
|
data=_edit_payload(root, building, parent_id=str(root.id)),
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
db.session.expire_all()
|
||||||
|
assert db.session.get(Meter, root.id).parent_id is None
|
||||||
|
|
||||||
|
response = authenticated_client.post(
|
||||||
|
f"/meters/{root.id}/edit",
|
||||||
|
data=_edit_payload(root, building, parent_id=str(grandchild.id)),
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
db.session.expire_all()
|
||||||
|
assert db.session.get(Meter, root.id).parent_id is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_meter_edit_http_types_status_replacement_and_c2_wording(app, authenticated_client, admin_user):
|
||||||
|
with app.app_context():
|
||||||
|
_, building, _ = _equipment()
|
||||||
|
old = create_meter(name="TEST_UI_C1_FIX_OLD", meter_type="eau", unit="m³", building_id=building.id)
|
||||||
|
new = replace_meter(old_meter=old, name="TEST_UI_C1_FIX_NEW", user_id=admin_user["id"])
|
||||||
|
|
||||||
|
response = authenticated_client.get(f"/meters/{old.id}")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "État du compteur".encode() in response.data
|
||||||
|
assert "Remplacé".encode() in response.data
|
||||||
|
assert "Remplacé par".encode() in response.data
|
||||||
|
assert new.name.encode() in response.data
|
||||||
|
|
||||||
|
response = authenticated_client.get(f"/meters/{new.id}")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "Remplace".encode() in response.data
|
||||||
|
assert old.name.encode() in response.data
|
||||||
|
|
||||||
|
response = authenticated_client.get(f"/meters/{old.id}/edit")
|
||||||
|
assert response.status_code == 200
|
||||||
|
for label in ("Eau", "Gaz", "Électricité", "Photocopieur", "Heures", "Cycles", "Distance"):
|
||||||
|
assert label.encode() in response.data
|
||||||
|
assert b"Le syst\xc3\xa8me vous rappellera" not in response.data
|
||||||
|
assert b"planification automatique des \xc3\xa9ch\xc3\xa9ances" in response.data
|
||||||
|
|
||||||
|
response = authenticated_client.post(
|
||||||
|
f"/meters/{old.id}/edit",
|
||||||
|
data=_edit_payload(old, building, meter_type="eau"),
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
db.session.expire_all()
|
||||||
|
assert db.session.get(Meter, old.id).meter_type == "eau"
|
||||||
|
|
||||||
|
unknown = create_meter(name="TEST_UI_C1_FIX_UNKNOWN", meter_type="future_type", building_id=building.id)
|
||||||
|
response = authenticated_client.get(f"/meters/{unknown.id}/edit")
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert b"Autre \xe2\x80\x94 future_type" in response.data
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue