package settings import ( "strings" "testing" ) // R-1340, second producer (found live 2026-10-29 on Tester 1): the hold's Why() — the hub's „Held apps" line and the // box's app_held event — still said „held after an off-site restore failed its database replay" for a LOCAL restore of // an app with no database whose put-back stop failed. It must name what the hold record carries. // RED-PROOF: seen failing on the old fixed sentence. func TestR1340_WhyNamesTheMixedCause(t *testing.T) { for _, tc := range []struct { name string h RestoreHold want, not []string }{ {"local put-back, no database", RestoreHold{Reason: HoldReasonRestoreMixed, At: "T", RestoreKind: RestoreKindLocal, MixedCause: MixedCausePutBack, FailedStep: "stopping the app before the put-back"}, []string{"local restore", "putting the live data back failed", "stopping the app before the put-back"}, []string{"database", "off-site"}}, {"off-site database replay", RestoreHold{Reason: HoldReasonRestoreMixed, At: "T", RestoreKind: RestoreKindOffsite, MixedCause: MixedCausePutBack, DBReplay: true}, []string{"off-site restore", "database replay", "putting the live data back failed"}, nil}, {"definition write", RestoreHold{Reason: HoldReasonRestoreMixed, At: "T", RestoreKind: RestoreKindOffsite, MixedCause: MixedCauseDefinitionWrite}, []string{"definition"}, []string{"database"}}, {"interrupted put-back", RestoreHold{Reason: HoldReasonRestoreMixed, At: "T", MixedCause: MixedCauseInterruptedPutBack}, []string{"interrupted"}, []string{"database"}}, {"legacy record", RestoreHold{Reason: HoldReasonRestoreMixed, At: "T"}, []string{"stopped half-way", "clear the hold"}, []string{"database", "off-site"}}, } { got := tc.h.Why() for _, w := range tc.want { if !strings.Contains(got, w) { t.Errorf("%s: %q lacks %q", tc.name, got, w) } } for _, n := range tc.not { if strings.Contains(got, n) { t.Errorf("%s: %q says %q", tc.name, got, n) } } } }