Ensure department-scoped self-serve settings load and save safely across route transitions, document the API contract, and cover stale in-flight state.
56 lines
2.7 KiB
JavaScript
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))");
|
|
});
|
|
});
|