Files
pleno-vue/tests/unit/booking-count-guards.spec.js

43 lines
1.4 KiB
JavaScript

import { describe, expect, it } from "vitest";
import {
hasExplicitBookingCountPermission,
isExpectedBookingCountRequestFailure,
} from "@/components/models/navigation/items/bookingCountGuards.js";
describe("booking count navigation guards", () => {
it("requires explicit booking permissions instead of superuser shell access", () => {
expect(
hasExplicitBookingCountPermission({
permissions: {
value: ["superuser"],
},
})
).toBe(false);
expect(
hasExplicitBookingCountPermission({
permissions: {
value: ["superuser", "list_bookings"],
},
})
).toBe(true);
expect(
hasExplicitBookingCountPermission({
permissions: {
value: ["admin", "list_own_bookings"],
},
})
).toBe(true);
});
it("treats expected unavailable or forbidden count responses as quiet fallbacks", () => {
expect(isExpectedBookingCountRequestFailure({ response: { status: 401 } })).toBe(true);
expect(isExpectedBookingCountRequestFailure({ response: { status: 403 } })).toBe(true);
expect(isExpectedBookingCountRequestFailure({ response: { status: 404 } })).toBe(true);
expect(isExpectedBookingCountRequestFailure({ response: { status: 500 } })).toBe(false);
expect(isExpectedBookingCountRequestFailure(new Error("Network Error"))).toBe(false);
});
});