63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
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("未到展示时间时不应渲染公告块")
|
||
}
|
||
}
|