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("enables bypass when control commands are authorized", () => { const res = resolveMentionGatingWithBypass({ isGroup: true, requireMention: true, canDetectMention: true, wasMentioned: false, hasAnyMention: false, allowTextCommands: true, hasControlCommand: true, commandAuthorized: true, }); expect(res.shouldBypassMention).toBe(true); expect(res.shouldSkip).toBe(false); }); it("does not bypass when control commands are not authorized", () => { const res = resolveMentionGatingWithBypass({ isGroup: true, requireMention: true, canDetectMention: true, wasMentioned: false, hasAnyMention: false, allowTextCommands: true, hasControlCommand: true, commandAuthorized: false, }); expect(res.shouldBypassMention).toBe(false); expect(res.shouldSkip).toBe(true); }); });