import { describe, expect, it } from "vitest"; import { resolveMentionGating, resolveMentionGatingWithBypass } from "./mention-gating.js"; describe("resolveMentionGating", () => { it("combines explicit, implicit, and bypass mentions", () => { const res = resolveMentionGating({ requireMention: true, canDetectMention: true, wasMentioned: false, implicitMention: true, shouldBypassMention: false, }); expect(res.effectiveWasMentioned).toBe(true); expect(res.shouldSkip).toBe(false); }); it("skips when mention required and none detected", () => { const res = resolveMentionGating({ requireMention: true, canDetectMention: true, wasMentioned: false, implicitMention: false, shouldBypassMention: false, }); expect(res.effectiveWasMentioned).toBe(false); expect(res.shouldSkip).toBe(true); }); it("does not skip when mention detection is unavailable", () => { const res = resolveMentionGating({ requireMention: true, canDetectMention: false, wasMentioned: false, }); expect(res.shouldSkip).toBe(false); }); }); describe("resolveMentionGatingWithBypass", () => { it.each([ { name: "enables bypass when control commands are authorized", commandAuthorized: true, shouldBypassMention: true, shouldSkip: false, }, { name: "does not bypass when control commands are not authorized", commandAuthorized: false, shouldBypassMention: false, shouldSkip: true, }, ])("$name", ({ commandAuthorized, shouldBypassMention, shouldSkip }) => { const res = resolveMentionGatingWithBypass({ isGroup: true, requireMention: true, canDetectMention: true, wasMentioned: false, hasAnyMention: false, allowTextCommands: true, hasControlCommand: true, commandAuthorized, }); expect(res.shouldBypassMention).toBe(shouldBypassMention); expect(res.shouldSkip).toBe(shouldSkip); }); });