package backup import ( "io" "log" "testing" "gitea.dooplex.hu/admin/felhom-controller/internal/settings" ) // R-660 — UpdateHeldStacks names the apps an UPDATE hold stops, and never an R-379 restore hold (that // hold has no event of its own; the app-down alarm stays its voice). func TestR660_UpdateHeldStacksIsUpdateHoldsOnly(t *testing.T) { sett := slice4Settings(t) m := &Manager{logger: log.New(io.Discard, "", 0), settings: sett} if got := m.UpdateHeldStacks(); len(got) != 0 { t.Fatalf("no holds → %v", got) } _ = sett.SetRestoreHold(settings.RestoreHold{Stack: "nextcloud", At: "2026-09-23T21:42:39Z", Reason: settings.HoldReasonUpdateFailed}) _ = sett.SetRestoreHold(settings.RestoreHold{Stack: "docmost", At: "2026-08-22T14:00:00Z"}) got := m.UpdateHeldStacks() if !got["nextcloud"] || got["docmost"] || len(got) != 1 { t.Fatalf("got %v, want exactly {nextcloud}", got) } var nilM *Manager if nilM.UpdateHeldStacks() != nil { t.Fatal("a nil manager must answer nil") } }