import { describe, expect, test } from "bun:test"; import { NOTIFICATION_CHANNELS, EDITOR_MODES, TEAMMATE_MODES, } from "../configConstants"; describe("NOTIFICATION_CHANNELS", () => { test("contains expected channels", () => { expect(NOTIFICATION_CHANNELS).toContain("auto"); expect(NOTIFICATION_CHANNELS).toContain("iterm2"); expect(NOTIFICATION_CHANNELS).toContain("terminal_bell"); expect(NOTIFICATION_CHANNELS).toContain("kitty"); expect(NOTIFICATION_CHANNELS).toContain("ghostty"); }); test("is readonly array", () => { expect(Array.isArray(NOTIFICATION_CHANNELS)).toBe(true); // TypeScript enforces readonly at compile time; runtime is still a plain array expect(NOTIFICATION_CHANNELS.length).toBeGreaterThan(0); }); test("includes all documented channels", () => { expect(NOTIFICATION_CHANNELS).toEqual([ "auto", "iterm2", "iterm2_with_bell", "terminal_bell", "kitty", "ghostty", "notifications_disabled", ]); }); test("has no duplicate entries", () => { const unique = new Set(NOTIFICATION_CHANNELS); expect(unique.size).toBe(NOTIFICATION_CHANNELS.length); }); }); describe("EDITOR_MODES", () => { test("contains 'normal' and 'vim'", () => { expect(EDITOR_MODES).toContain("normal"); expect(EDITOR_MODES).toContain("vim"); }); test("has exactly 2 entries", () => { expect(EDITOR_MODES).toHaveLength(2); }); test("is ordered: normal, vim", () => { expect(EDITOR_MODES).toEqual(["normal", "vim"]); }); }); describe("TEAMMATE_MODES", () => { test("contains 'auto', 'tmux', 'in-process'", () => { expect(TEAMMATE_MODES).toContain("auto"); expect(TEAMMATE_MODES).toContain("tmux"); expect(TEAMMATE_MODES).toContain("in-process"); }); test("has exactly 3 entries", () => { expect(TEAMMATE_MODES).toHaveLength(3); }); test("is ordered: auto, tmux, in-process", () => { expect(TEAMMATE_MODES).toEqual(["auto", "tmux", "in-process"]); }); });