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); }); });