diff --git a/goodwe_controller/test_ux46.py b/goodwe_controller/test_ux46.py index 24c2f31..1658f08 100644 --- a/goodwe_controller/test_ux46.py +++ b/goodwe_controller/test_ux46.py @@ -14,6 +14,8 @@ showed English under Dutch titles (SAFETY-118 I-1, UX-44 I-2, UX-45 I-3). 3. The setting labels the Dutch notes quote are the labels in nl.yaml, and the peak forecast label has no "(W)", since any power unit is read. 4. The rules above catch spoiled input. + +Mutating a module this file grades? Read MUTATION.md first (purge __pycache__). """ import ast @@ -38,6 +40,7 @@ import ux13_demo as D # noqa: E402 from style_rules import sentences, text_problems, words # noqa: E402 from app import messages, uimodel as U, uitext, web # noqa: E402 from app.main import Controller # noqa: E402 +from named_absence import field, nth, present # noqa: E402 from app.validate import (Note, note_text, setup_checks, # noqa: E402 config_notes) @@ -218,24 +221,26 @@ def attention(payload, rid): c = make(ONE, soc=(62.0,), batt=(960.0,)) c._peak_fc_fault = "kWh" s_en, s_nl = c.status_payload(), c.status_payload(lang="nl") -_en = next(r for r in s_en["checks"] if r.get("id") == "peak_forecast") -_nl = next(r for r in s_nl["checks"] if r.get("id") == "peak_forecast") +def fc_row(payload): + return nth([r for r in payload["checks"] if r.get("id") == "peak_forecast"]) + + +_en, _nl = fc_row(s_en), fc_row(s_nl) check("Home, English: the peak forecast row is the English sentence", - _en["text"] == messages.peak_forecast_unit("kWh") + present(_en) and field(_en, "text") == messages.peak_forecast_unit("kWh") and attention(s_en, "peak_forecast")["body"] == messages.peak_forecast_unit("kWh")) check("Home, Dutch: the row, the Needs-attention entry and the title are " "Dutch", - _nl["text"] == messages.peak_forecast_unit("kWh", "nl") + present(_nl) and field(_nl, "text") == messages.peak_forecast_unit("kWh", "nl") and attention(s_nl, "peak_forecast")["body"] == messages.peak_forecast_unit("kWh", "nl") and attention(s_nl, "peak_forecast")["title"] == uitext.words("nl")["home_words"]["attn"]["peak_forecast"]) c._peak_fc_fault = "" -_nl0 = next(r for r in c.status_payload(lang="nl")["checks"] - if r.get("id") == "peak_forecast") +_nl0 = fc_row(c.status_payload(lang="nl")) check("...and with no unit at all, the Dutch is the 'no unit' sentence", - _nl0["text"] == messages.peak_forecast_unit("", "nl") + present(_nl0) and field(_nl0, "text") == messages.peak_forecast_unit("", "nl") and messages.peak_forecast_unit("", "nl") != messages.peak_forecast_unit("kWh", "nl")) check("a language that is not Dutch gets the English, and the default call "