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"); }); });