Files
claude-code/src/utils/__tests__/configConstants.test.ts
2026-04-02 20:28:08 +08:00

71 lines
2.0 KiB
TypeScript

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