package templates import ( "strings" "testing" "time" "github.com/tamakyi/TamaBox/internal/conf" ) // 公告文案要按访客语言取:header 里传的是 .LangCode, // 接错了就是「英文界面看到中文公告」或者干脆整块不渲染。 func TestAnnouncementRenderedPerLanguage(t *testing.T) { old := conf.Announcement t.Cleanup(func() { conf.Announcement = old }) conf.Announcement.ContentZhCN = "简中公告" conf.Announcement.ContentEn = "English notice" cases := []struct { lang string want string notWant string }{ {"zh-CN", "简中公告", "English notice"}, {"en", "English notice", "简中公告"}, } for _, c := range cases { t.Run(c.lang, func(t *testing.T) { data := publicBaseData() data["LangCode"] = c.lang out, err := renderToString(t, "question/list", data) if err != nil { t.Fatalf("render: %v", err) } if !strings.Contains(out, c.want) { t.Fatalf("%s 界面应显示 %q", c.lang, c.want) } if strings.Contains(out, c.notWant) { t.Fatalf("%s 界面不应显示 %q", c.lang, c.notWant) } }) } } // 窗口外整块不渲染:不能先出 HTML 再靠 CSS 藏,否则会留下空白占位。 func TestAnnouncementHiddenOutsideWindow(t *testing.T) { old := conf.Announcement t.Cleanup(func() { conf.Announcement = old }) conf.Announcement.ContentZhCN = "简中公告" conf.Announcement.StartAt = time.Now().Add(time.Hour) data := publicBaseData() out, err := renderToString(t, "question/list", data) if err != nil { t.Fatalf("render: %v", err) } if strings.Contains(out, "tb-announce") { t.Fatal("未到展示时间时不应渲染公告块") } }