package web
import (
"html"
"strings"
"testing"
"gitea.dooplex.hu/admin/felhom-controller/internal/stacks"
)
// R-772: the app page SAYS when the declared health check could not run, in the reader's language, and says nothing
// when the check ran (or when there is no record). Both branches rendered — a line in a template that no test renders
// is a seam built and never wired.
func TestR772_AppPageSaysTheCheckDidNotRun(t *testing.T) {
s := i18nTestServer(t)
page := func(name string, hp *stacks.HealthProbeResult) i18nCase {
return i18nCase{name, "app_info", func() map[string]interface{} {
d := i18nLayoutData("stacks", "Karakeep")
st := i18nStack("karakeep", "Karakeep", stacks.StateDegraded, true)
st.HealthProbe = hp
d["Stack"], d["Meta"], d["AppInfo"] = &st, st.Meta, st.Meta.AppInfo
return d
}}
}
notRun := page("r772_not_checked", &stacks.HealthProbeResult{NotChecked: true})
ran := page("r772_checked", &stacks.HealthProbeResult{Healthy: true})
none := page("r772_no_record", nil)
enLine, huLine := "No health check ran: no matching container.", stacks.MsgHealthNoProbeContainer
en := html.UnescapeString(renderI18nCase(t, s, "en", notRun))
hu := html.UnescapeString(renderI18nCase(t, s, "hu", notRun))
if !strings.Contains(en, enLine) || strings.Contains(en, huLine) || !strings.Contains(hu, huLine) {
t.Fatalf("the not-checked line must reach the page in the reader's language")
}
for _, c := range []i18nCase{ran, none} {
for _, lang := range []string{"en", "hu"} {
if out := renderI18nCase(t, s, lang, c); strings.Contains(out, "data-health-not-checked") {
t.Fatalf("%s/%s: the line must not show when the check ran or there is no record", c.name, lang)
}
}
}
}