fix templates v2

This commit is contained in:
tamakyi
2026-10-22 17:49:25 +08:00
parent bd02eb7ed2
commit b939d26ff0
11 changed files with 436 additions and 60 deletions
+62
View File
@@ -0,0 +1,62 @@
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("未到展示时间时不应渲染公告块")
}
}