50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
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);
|
|
});
|
|
});
|