package web import ( "strings" "testing" "gitea.dooplex.hu/admin/felhom-controller/internal/settings" ) // v0.126.0 Part E — the stale zero-toggle warning line tells the truth. Display-pick only: // the persisted LastWarning is never mutated; the page swaps the stale "nincs mentésre // jelölt alkalmazás" run-result for the selection-changed note once ≥1 app is toggled. // COMPANION red-proof (recorded in REPORT): make offboxWarningDisplay return lastWarning // unconditionally → TestOffboxWarningDisplay_Pick's 1-enabled case FAILS. const staleZeroToggleWarning = "Sikeres — nincs mentésre jelölt alkalmazás volt a futáskor." func TestOffboxWarningDisplay_Pick(t *testing.T) { // warning + ≥1 enabled → the replacement line if got := offboxWarningDisplay(staleZeroToggleWarning, 1); got != offboxSelectionChangedLine { t.Errorf("stale warning + 1 toggled: got %q, want the selection-changed line", got) } // warning + 0 enabled → the original line, verbatim (the v0.123.0 honesty stays) if got := offboxWarningDisplay(staleZeroToggleWarning, 0); got != staleZeroToggleWarning { t.Errorf("stale warning + 0 toggled: got %q, want the original warning unchanged", got) } // any OTHER warning passes through regardless of toggles (quota, partial failure) quota := "A tároló a keret 84%-át használja (42/50 GB)." if got := offboxWarningDisplay(quota, 3); got != quota { t.Errorf("non-stale warning must pass through verbatim, got %q", got) } // no warning → no line if got := offboxWarningDisplay("", 2); got != "" { t.Errorf("empty warning must stay empty, got %q", got) } } func TestOffboxWarningDisplay_RemotePageRender(t *testing.T) { // ≥1 toggled: the page shows the replacement, NOT the stale line. data := appRowSplitData() data["Offbox"] = &settings.OffboxTarget{ Enabled: true, Host: "nas.local", LastStatus: "ok", EscrowState: "escrowed", LastWarning: staleZeroToggleWarning, } data["OffboxWarningDisplay"] = offboxWarningDisplay(staleZeroToggleWarning, 1) html := renderBackupPage(t, "backups_remote", data) if !strings.Contains(html, offboxSelectionChangedLine) { t.Error("selection-changed note missing with 1 app toggled") } if strings.Contains(html, staleZeroToggleWarning) { t.Error("the stale zero-toggle line still renders alongside the replacement") } // 0 toggled: the original warning + the v0.123.0 zero-toggle hint, unchanged. data = appRowSplitData() data["OffboxApps"] = []OffboxAppRow{{Name: "calibre-web", DisplayName: "Calibre-Web", Slug: "calibre-web", Enabled: false}} data["OffboxToggledCount"] = 0 data["Offbox"] = &settings.OffboxTarget{ Enabled: true, Host: "nas.local", LastStatus: "ok", EscrowState: "escrowed", LastWarning: staleZeroToggleWarning, } data["OffboxWarningDisplay"] = offboxWarningDisplay(staleZeroToggleWarning, 0) html = renderBackupPage(t, "backups_remote", data) if !strings.Contains(html, staleZeroToggleWarning) { t.Error("0 toggled: the original run warning must render unchanged") } if strings.Contains(html, offboxSelectionChangedLine) { t.Error("0 toggled: the selection-changed note must NOT render") } if !strings.Contains(html, "Nincs távoli mentésre jelölt alkalmazás — jelölj ki legalább egyet.") { t.Error("0 toggled: the v0.123.0 hint must stay") } }