Spaces:
Paused
Paused
| 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); | |
| }); | |
| }); | |