Files
pleno-vue/tests/unit/navigation-menu-items-user-subusers.spec.js
T

53 lines
2.5 KiB
JavaScript

import { readFileSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "vitest";
const root = process.cwd();
const navigationSource = readFileSync(
join(root, "src/components/models/navigation/items/NavigationMenuItemsUser.vue"),
"utf8"
).replace(/\r\n/g, "\n");
const subusersViewSource = readFileSync(
join(root, "src/views/dashboards/superUserDashboard/Subusers.vue"),
"utf8"
).replace(/\r\n/g, "\n");
const routerSource = readFileSync(join(root, "src/router.js"), "utf8").replace(/\r\n/g, "\n");
const superuserNavigationSource = readFileSync(
join(root, "src/components/models/navigation/items/NavigationMenuItemsSuperUser.vue"),
"utf8"
).replace(/\r\n/g, "\n");
const navigationMenuItemSource = readFileSync(
join(root, "src/components/viewport/page/headers/menu/NavigationMenuItem.vue"),
"utf8"
).replace(/\r\n/g, "\n");
describe("Subusers navigation contract", () => {
it("points the chauffører menu item to the subusers page", () => {
expect(navigationSource).toContain("to: `/user/subusers`");
expect(navigationSource).not.toContain("to: `/user/subusers/grants`");
});
it("gates the subusers page with the shared subuser-management permission helper", () => {
expect(subusersViewSource).toContain('SessionUser.canManageSubusers("list")');
expect(navigationSource).toContain("permissions: ['list_own_subusers', 'SUBUSERS_LIST']");
expect(navigationSource).not.toContain("permissions: ['user', 'SUBUSERS_LIST']");
expect(subusersViewSource).toContain('default: "customer"');
});
it("registers a superuser chauffører page with the superuser endpoint", () => {
expect(routerSource).toContain("path: '/superuser/subusers'");
expect(routerSource).toContain("props: { mode: 'superuser' }");
expect(superuserNavigationSource).toContain('label: "Chauffører", to: "/superuser/subusers"');
expect(subusersViewSource).toContain("SessionUser.canAccessSuperUser()");
expect(subusersViewSource).toContain(":endpoint=\"isSuperuserPage ? '/superuser/subusers' : '/subusers'\"");
});
it("checks child navigation permissions against the child item", () => {
expect(navigationMenuItemSource).toContain("return hasItemPermissions(child) && hasDepartmentIdInPath");
expect(navigationMenuItemSource).toContain("return hasItemPermissions(child);");
expect(navigationMenuItemSource).not.toContain(
"return hasPermissions.value && hasDepartmentIdInPath(router.currentRoute.value.path);\n }\n return hasPermissions.value;"
);
});
});