Files
pleno-vue/tests/unit/department-modules-setup-self-serve.spec.js
T
Jeppe B 5204536f92 Fix self-serve settings state and contract (#229)
Ensure department-scoped self-serve settings load and save safely across route transitions, document the API contract, and cover stale in-flight state.
2026-07-28 18:34:35 +02:00

56 lines
2.7 KiB
JavaScript

import { readFileSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "vitest";
const source = readFileSync(
join(process.cwd(), "src/views/dashboards/superUserDashboard/department/modules/DepartmentModulesSetup.vue"),
"utf8"
);
describe("DepartmentModulesSetup self-serve management regression", () => {
it("loads and updates department self-serve status through shared helpers", () => {
expect(source).toContain("getDepartmentSelfServeStatus");
expect(source).toContain("setDepartmentSelfServeStatus");
expect(source).toContain("loadSelfServeEnabled()");
expect(source).toContain("updateSelfServeEnabled");
});
it("renders a dedicated self-serve module switch in setup UI", () => {
expect(source).toContain('title="Selvvask"');
expect(source).toContain(':title="selfServeAutoDeactivationText"');
expect(source).toContain(':description="selfServeAutoDeactivationText"');
expect(source).toContain("NEVER");
});
it("refetches scheduling metadata for legacy message-only update responses", () => {
expect(source).toContain("if (status.hasAutoDeactivation)");
expect(source).toContain("preserveEnabledOnError: true");
expect(source).toContain("requestedDepartmentId");
expect(source).toContain("if (!preserveEnabledOnError)");
});
it("reloads self-serve status safely when the route department changes", () => {
expect(source).toContain("watch(");
expect(source).toContain("router.currentRoute.value.params.departmentId");
expect(source).toContain("selfServeStatusRequestSequence");
expect(source).toContain("requestSequence !== selfServeStatusRequestSequence");
expect(source).toContain("{ immediate: true }");
});
it("invalidates an in-flight save when the route department changes", () => {
expect(source).toContain("selfServeSaveRequestSequence");
expect(source).toContain("const requestSequence = ++selfServeSaveRequestSequence");
expect(source).toContain("requestSequence !== selfServeSaveRequestSequence");
expect(source).toContain("selfServeSaveRequestSequence++");
expect(source).toContain("isSavingSelfServeEnabled.value = false");
});
it("ignores department-variable responses from a previously selected route department", () => {
expect(source).toContain("departmentVariablesRequestSequence");
expect(source).toContain("const requestSequence = ++departmentVariablesRequestSequence");
expect(source).toContain("requestSequence !== departmentVariablesRequestSequence");
expect(source).toContain("String(departmentId.value) !== requestedDepartmentId");
expect(source).toContain("getDepartmentVariables(String(nextDepartmentId))");
});
});