Files
healer-man/src/app/releaseFeatures.test.ts
T
2026-09-16 14:30:58 -04:00

42 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
isShelvedShellPhase,
sessionCanUseGmTools,
sessionCanUseShelvedGmTools,
SHELVED_MODES_ENABLED,
} from "./releaseFeatures";
describe("release feature boundary", () => {
it("recognizes every legacy shelved phase", () => {
expect(["manastorms", "arenas", "arena-game"].every(isShelvedShellPhase)).toBe(true);
expect(isShelvedShellPhase("gm-admin")).toBe(false);
expect(isShelvedShellPhase("main-menu")).toBe(false);
expect(isShelvedShellPhase("game")).toBe(false);
});
it("exposes GM tools only in a shelved build with an authenticated GM", () => {
const session = {
kind: "account",
ownerId: "gm-account",
displayName: "Phenom",
accessToken: "token",
roles: ["gm"],
} as const;
expect(sessionCanUseShelvedGmTools(session)).toBe(SHELVED_MODES_ENABLED);
expect(sessionCanUseShelvedGmTools({ ...session, roles: [] })).toBe(false);
expect(sessionCanUseShelvedGmTools({ ...session, accessToken: "" })).toBe(false);
});
it("exposes dungeon GM tools in normal releases to authenticated GMs", () => {
const session = {
kind: "account",
ownerId: "gm-account",
displayName: "Phenom",
accessToken: "token",
roles: ["gm"],
} as const;
expect(sessionCanUseGmTools(session)).toBe(true);
expect(sessionCanUseGmTools({ ...session, roles: [] })).toBe(false);
});
});