Files
tamabox/templates/announcement_render_test.go
2026-10-22 17:49:25 +08:00

63 lines
1.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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("未到展示时间时不应渲染公告块")
}
}