Files
go_blog/handlers/article_form_template_test.go
T
dsh d78ed8e2fe refactor: 文章新建/编辑表单收敛为单一模板 article_form,删除两套重复模板
- 新增 templates/partials/article_form.html(define article_form):
  按 .FormIsMy 分支渲染——管理员变体(标签/置顶勾选/草稿发布双按钮/
  /api/admin/articles)与作者变体(状态下拉/保存取消//api/my/articles)
- renderArticleForm / renderMyArticleForm 均渲染 article_form,各自
  设置 FormIsMy=false/true;JS 统一(API_BASE/redirectBase/editor/
  错误提示均单份)
- 删除 templates/admin/article_create.html 与
  templates/user/my_article_form.html(约 360 行 → 一份 ~230 行)
- 新增 TestArticleFormTemplateVariants 断言两个变体渲染差异;
  测试环境注册两个工作区的新建页路由
2026-08-28 20:02:46 +08:00

50 lines
1.7 KiB
Go
Raw 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 handlers
import (
"net/http"
"strings"
"testing"
)
// TestArticleFormTemplateVariants 验证管理员与作者工作区共用同一份
// article_form 模板(templates/partials/article_form.html)时的两个变体:
// - 管理员:含置顶勾选(is_top/ /api/admin/articles 前缀,作者 API 不出现
// - 作者:含状态下拉 / /api/my/articles 前缀,置顶与管理员 API 不出现
func TestArticleFormTemplateVariants(t *testing.T) {
e := newSecurityTestEnv(t)
// 管理员新建页(FormIsMy=false 变体)。
admin := e.login(t, "admin")
w := e.do(http.MethodGet, "/admin/articles/new", admin, nil, "")
if w.Code != http.StatusOK {
t.Fatalf("admin GET /admin/articles/new: status = %d", w.Code)
}
body := w.Body.String()
for _, want := range []string{`id="articleForm"`, `id="articleSessionToken"`, "isTopCheckbox", `"/api/admin/articles"`} {
if !strings.Contains(body, want) {
t.Fatalf("admin variant missing %q", want)
}
}
if strings.Contains(body, "/api/my/articles") {
t.Fatal("admin variant must not reference the author API")
}
// 作者新建页(FormIsMy=true 变体)。
alice := e.login(t, "alice")
w = e.do(http.MethodGet, "/my/articles/new", alice, nil, "")
if w.Code != http.StatusOK {
t.Fatalf("author GET /my/articles/new: status = %d", w.Code)
}
body = w.Body.String()
for _, want := range []string{`id="articleForm"`, `id="articleSessionToken"`, `"/api/my/articles"`, `name="status"`} {
if !strings.Contains(body, want) {
t.Fatalf("author variant missing %q", want)
}
}
for _, forbid := range []string{"isTopCheckbox", "/api/admin/articles"} {
if strings.Contains(body, forbid) {
t.Fatalf("author variant must not contain %q", forbid)
}
}
}