Files
ctms/frontend/src/views/admin/SiteForm.test.ts
T
Cheng Zhou a17f4cc522 完善项目级权限与项目管理入口
- 新增项目成员候选用户接口,避免 PM 读取全局用户列表
- 按项目角色和权限矩阵控制项目管理、成员、中心与审计入口
- 合并侧边栏管理后台入口,统一从项目管理进入成员等模块
- 加强成员管理安全约束,禁止 PM 修改自己、系统管理员或更高权限角色
- 修复多项目角色缓存串用问题,并补充前后端回归测试
2026-05-13 14:16:15 +08:00

32 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
const readSiteForm = () => readFileSync(resolve(__dirname, "./SiteForm.vue"), "utf8");
const readSiteTypes = () => readFileSync(resolve(__dirname, "../../types/api.ts"), "utf8");
describe("Admin site form phone field", () => {
it("hydrates and submits the phone field", () => {
const formSource = readSiteForm();
const typeSource = readSiteTypes();
expect(formSource).toContain("form.phone = props.site.phone || (props.site as any)?.contact_phone || \"\"");
expect(formSource).toContain("phone: form.phone");
expect(formSource).toContain('v-model="form.phone"');
expect(typeSource).toContain("phone?: string | null;");
expect(typeSource).toContain("contact_phone?: string | null;");
});
});
describe("Admin site PM user loading", () => {
it("uses project member embedded user data instead of the global user directory", () => {
const sitesSource = readFileSync(resolve(__dirname, "./Sites.vue"), "utf8");
const formSource = readSiteForm();
expect(sitesSource).not.toContain("../../api/users");
expect(sitesSource).not.toContain("fetchUsers");
expect(sitesSource).toContain(".map((member) => member.user)");
expect(formSource).toContain("m.user?.full_name");
});
});