fix templates v2
This commit is contained in:
@@ -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("未到展示时间时不应渲染公告块")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user