57 lines
3.0 KiB
TypeScript
57 lines
3.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
const readSource = () => readFileSync(resolve(__dirname, "./StartupFeasibilityEthics.vue"), "utf8");
|
|
|
|
describe("StartupFeasibilityEthics project permissions", () => {
|
|
it("hides initiation and ethics create/delete actions by their backend operation permissions", () => {
|
|
const source = readSource();
|
|
|
|
expect(source).toContain('canUseApiPermission("startup_initiation:create")');
|
|
expect(source).toContain('canUseApiPermission("startup_initiation:read")');
|
|
expect(source).toContain('canUseApiPermission("startup_initiation:update")');
|
|
expect(source).toContain('canUseApiPermission("startup_initiation:delete")');
|
|
expect(source).toContain('canUseApiPermission("startup_ethics:read")');
|
|
expect(source).toContain('canUseApiPermission("startup_ethics:create")');
|
|
expect(source).toContain('canUseApiPermission("startup_ethics:update")');
|
|
expect(source).toContain('canUseApiPermission("startup_ethics:delete")');
|
|
expect(source).toContain('v-if="canReadFeasibility"');
|
|
expect(source).toContain('v-if="canReadEthics"');
|
|
expect(source).toContain("if (!canReadFeasibility.value)");
|
|
expect(source).toContain("if (!canReadEthics.value)");
|
|
expect(source).toContain('v-if="activeTab === \'feasibility\' && canCreateFeasibility"');
|
|
expect(source).toContain('v-if="canUpdateFeasibility"');
|
|
expect(source).toContain('v-if="canDeleteFeasibility"');
|
|
expect(source).toContain('v-if="activeTab === \'ethics\' && canCreateEthics"');
|
|
expect(source).toContain('v-if="canUpdateEthics"');
|
|
expect(source).toContain('v-if="canDeleteEthics"');
|
|
});
|
|
});
|
|
|
|
describe("StartupFeasibilityEthics drawer editors", () => {
|
|
it("opens initiation and ethics create forms in drawers instead of routing to form pages", () => {
|
|
const source = readSource();
|
|
|
|
expect(source).toContain("FeasibilityEditorDrawer");
|
|
expect(source).toContain("EthicsEditorDrawer");
|
|
expect(source).toContain("feasibilityDrawerVisible");
|
|
expect(source).toContain("ethicsDrawerVisible");
|
|
expect(source).not.toContain('router.push("/startup/feasibility/new")');
|
|
expect(source).not.toContain('router.push("/startup/ethics/new")');
|
|
});
|
|
|
|
it("opens initiation and ethics edit drawers from table action columns", () => {
|
|
const source = readSource();
|
|
|
|
expect(source).toContain(':record-id="editingFeasibilityId"');
|
|
expect(source).toContain(':record-id="editingEthicsId"');
|
|
expect(source).toContain("const editingFeasibilityId = ref<string | undefined>();");
|
|
expect(source).toContain("const editingEthicsId = ref<string | undefined>();");
|
|
expect(source).toContain("@click.stop=\"openFeasibilityEditor(scope.row)\"");
|
|
expect(source).toContain("@click.stop=\"openEthicsEditor(scope.row)\"");
|
|
expect(source).toContain("editingFeasibilityId.value = row?.id;");
|
|
expect(source).toContain("editingEthicsId.value = row?.id;");
|
|
});
|
|
});
|