import { describe, expect, it } from "vitest"; import { $createLinkNode } from "@lexical/link"; import { createEditor } from "lexical"; import { MentionAwareLinkNode, getMentionAwareLinkNodeInit, mentionAwareLinkNodeReplacement, } from "./mention-aware-link-node"; function createTestEditor() { return createEditor({ namespace: "mention-aware-link-node-test", nodes: [MentionAwareLinkNode, mentionAwareLinkNodeReplacement], onError(error: Error) { throw error; }, }); } describe("getMentionAwareLinkNodeInit", () => { it("copies link attributes without carrying over a node key", () => { const init = getMentionAwareLinkNodeInit({ getURL: () => "agent://agent-123", getRel: () => "noreferrer", getTarget: () => "_blank", getTitle: () => "Agent mention", }); expect(Object.keys(init)).toEqual(["url", "attributes"]); expect(init).toEqual({ url: "agent://agent-123", attributes: { rel: "noreferrer", target: "_blank", title: "Agent mention", }, }); }); it("replaces LinkNode creation with MentionAwareLinkNode without throwing", () => { const editor = createTestEditor(); let created: unknown; editor.update(() => { created = $createLinkNode("agent://agent-123"); }); expect(created).toBeInstanceOf(MentionAwareLinkNode); }); });