import { describe, expect, it } from "vitest"; import { normalizePluginsConfig, resolveEffectiveEnableState } from "./config-state.js"; describe("normalizePluginsConfig", () => { it("uses default memory slot when not specified", () => { const result = normalizePluginsConfig({}); expect(result.slots.memory).toBe("memory-core"); }); it("respects explicit memory slot value", () => { const result = normalizePluginsConfig({ slots: { memory: "custom-memory" }, }); expect(result.slots.memory).toBe("custom-memory"); }); it("disables memory slot when set to 'none' (case insensitive)", () => { expect( normalizePluginsConfig({ slots: { memory: "none" }, }).slots.memory, ).toBeNull(); expect( normalizePluginsConfig({ slots: { memory: "None" }, }).slots.memory, ).toBeNull(); }); it("trims whitespace from memory slot value", () => { const result = normalizePluginsConfig({ slots: { memory: " custom-memory " }, }); expect(result.slots.memory).toBe("custom-memory"); }); it("uses default when memory slot is empty string", () => { const result = normalizePluginsConfig({ slots: { memory: "" }, }); expect(result.slots.memory).toBe("memory-core"); }); it("uses default when memory slot is whitespace only", () => { const result = normalizePluginsConfig({ slots: { memory: " " }, }); expect(result.slots.memory).toBe("memory-core"); }); }); describe("resolveEffectiveEnableState", () => { it("enables bundled channels when channels..enabled=true", () => { const normalized = normalizePluginsConfig({ enabled: true, }); const state = resolveEffectiveEnableState({ id: "telegram", origin: "bundled", config: normalized, rootConfig: { channels: { telegram: { enabled: true, }, }, }, }); expect(state).toEqual({ enabled: true }); }); it("keeps explicit plugin-level disable authoritative", () => { const normalized = normalizePluginsConfig({ enabled: true, entries: { telegram: { enabled: false, }, }, }); const state = resolveEffectiveEnableState({ id: "telegram", origin: "bundled", config: normalized, rootConfig: { channels: { telegram: { enabled: true, }, }, }, }); expect(state).toEqual({ enabled: false, reason: "disabled in config" }); }); });