feat(ia): polish project operation workspaces

This commit is contained in:
Cheng Zhou
2026-06-08 11:06:07 +08:00
parent 834b4f1d48
commit 8cd8c38900
25 changed files with 2744 additions and 1516 deletions
@@ -12,12 +12,32 @@ describe("StartupMeetingAuth permissions", () => {
expect(source).toContain("if (canReadMembers.value)");
});
it("does not create kickoff records from row click unless startup auth create permission is granted", () => {
it("does not lazily create kickoff records from row click or edit action", () => {
const source = readSource();
expect(source).toContain('can("startup.auth.create")');
expect(source).toContain("canCreateAuth");
expect(source).toContain("if (!canCreateAuth.value)");
expect(source).not.toContain("createKickoff");
expect(source).toContain("if (!row.meeting_id) return");
});
it("renders rows from kickoff records instead of center placeholders", () => {
const source = readSource();
expect(source).toContain("const siteMap = computed");
expect(source).toContain("return kickoffItems.value");
expect(source).not.toContain("return sites.value");
});
it("renders kickoff operation column with edit action only", () => {
const source = readSource();
expect(source).toContain(":label=\"TEXT.common.labels.actions\"");
expect(source).toContain('can("startup.auth.update")');
expect(source).toContain("canUpdateAuth");
expect(source).not.toContain("canDeleteAuth");
expect(source).toContain("v-if=\"canUpdateAuth && scope.row.meeting_id\"");
expect(source).toContain("@click.stop=\"openKickoffEditor(scope.row)\"");
expect(source).not.toContain("removeKickoff");
expect(source).toContain("<KickoffEditorDrawer");
});
it("uses backend contact display names before falling back to member lookup", () => {