forked from phenom/healer-man
42 lines
1.4 KiB
TypeScript
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);
|
|
});
|
|
});
|