a17f4cc522
- 新增项目成员候选用户接口,避免 PM 读取全局用户列表 - 按项目角色和权限矩阵控制项目管理、成员、中心与审计入口 - 合并侧边栏管理后台入口,统一从项目管理进入成员等模块 - 加强成员管理安全约束,禁止 PM 修改自己、系统管理员或更高权限角色 - 修复多项目角色缓存串用问题,并补充前后端回归测试
32 lines
1.3 KiB
TypeScript
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");
|
|
});
|
|
});
|