feat: 保持模块列表筛选和分页状态 (#156)
This commit is contained in:
@@ -36,6 +36,60 @@ func TestPaginationCSS_桌面右对齐且窄窗口不遮挡内容(t *testing.T)
|
||||
}
|
||||
}
|
||||
|
||||
func TestModuleNavigation_按账号保存稳定列表状态且安全回退(t *testing.T) {
|
||||
header, err := os.ReadFile("templates/partials/header.html")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
js, err := os.ReadFile("static/js/app.js")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
headerSource := string(header)
|
||||
for _, want := range []string{
|
||||
"data-module-navigation",
|
||||
"data-ui-state-user=\"{{if .CurrentUser}}{{.CurrentUser.UserID}}{{end}}\"",
|
||||
"data-module-root=\"/shopee\"",
|
||||
"data-module-root=\"/pdd\"",
|
||||
"data-module-root=\"/syb\"",
|
||||
"data-module-root=\"/tasks\"",
|
||||
"data-module-root=\"/clients\"",
|
||||
"data-module-root=\"/users\"",
|
||||
} {
|
||||
if !strings.Contains(headerSource, want) {
|
||||
t.Errorf("公共导航缺少模块状态标识 %q", want)
|
||||
}
|
||||
}
|
||||
|
||||
jsSource := string(js)
|
||||
for _, want := range []string{
|
||||
"var MODULE_QUERY_KEYS = {",
|
||||
"\"/shopee\": [\"goods_id\", \"status\", \"shop\", \"image\", \"page\"]",
|
||||
"\"/syb\": [\"order_no\", \"shop\", \"stage\", \"page\", \"date_from\", \"date_to\"]",
|
||||
"var MODULE_STATE_PREFIX = \"cmautobuy:module-state:\"",
|
||||
"parsed.origin !== window.location.origin || parsed.pathname !== moduleRoot",
|
||||
"sessionStorage.setItem(",
|
||||
"sessionStorage.removeItem(moduleStateStorageKey(userID, moduleRoot))",
|
||||
"setupModuleNavigationState();",
|
||||
} {
|
||||
if !strings.Contains(jsSource, want) {
|
||||
t.Errorf("模块状态脚本缺少安全或交互约束 %q", want)
|
||||
}
|
||||
}
|
||||
|
||||
whitelistStart := strings.Index(jsSource, "var MODULE_QUERY_KEYS")
|
||||
whitelistEnd := strings.Index(jsSource, "var MODULE_STATE_PREFIX")
|
||||
if whitelistStart == -1 || whitelistEnd <= whitelistStart {
|
||||
t.Fatal("没有找到模块查询参数白名单")
|
||||
}
|
||||
whitelist := jsSource[whitelistStart:whitelistEnd]
|
||||
for _, forbidden := range []string{"\"msg\"", "\"error\"", "\"history\"", "\"login\"", "\"change_password\""} {
|
||||
if strings.Contains(whitelist, forbidden) {
|
||||
t.Errorf("稳定状态白名单不应包含临时参数 %s", forbidden)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestPurchaseModal_未选规格行保持隐藏且不提交(t *testing.T) {
|
||||
files := map[string][]string{
|
||||
"static/css/app.css": {
|
||||
|
||||
Reference in New Issue
Block a user