27 lines
1.4 KiB
TypeScript
27 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { resolveConnectorNavState } from "./connectorNavState";
|
|
|
|
describe("resolveConnectorNavState", () => {
|
|
it("maps an allowed decision to 'active'", () => {
|
|
expect(resolveConnectorNavState({ allowed: true })).toBe("active");
|
|
expect(resolveConnectorNavState({ allowed: true, reason: "included" })).toBe("active");
|
|
});
|
|
|
|
it("maps blueprint/role/override denials to 'hidden'", () => {
|
|
expect(resolveConnectorNavState({ allowed: false, reason: "blueprint-disabled" })).toBe("hidden");
|
|
expect(resolveConnectorNavState({ allowed: false, reason: "tenant-role-missing" })).toBe("hidden");
|
|
expect(resolveConnectorNavState({ allowed: false, reason: "tenant-override-disabled" })).toBe("hidden");
|
|
expect(resolveConnectorNavState({ allowed: false, reason: "tenant-override-not-toggleable" })).toBe("hidden");
|
|
});
|
|
|
|
it("maps entitlement/plan denials to 'locked' (upsell)", () => {
|
|
expect(resolveConnectorNavState({ allowed: false, reason: "not-included" })).toBe("locked");
|
|
expect(resolveConnectorNavState({ allowed: false, reason: "limit-reached" })).toBe("locked");
|
|
expect(resolveConnectorNavState({ allowed: false, reason: "no-subscription" })).toBe("locked");
|
|
});
|
|
|
|
it("defaults to 'locked' when a denial carries no reason", () => {
|
|
expect(resolveConnectorNavState({ allowed: false })).toBe("locked");
|
|
});
|
|
});
|