3 dispatchKeydownEventForNode,
4 dispatchKeydownEventForSelectedNode,
6 } from "lexical/__tests__/utils";
8 $createParagraphNode, $createTextNode,
12 import {$createDetailsNode, DetailsNode} from "@lexical/rich-text/LexicalDetailsNode";
13 import {registerKeyboardHandling} from "../keyboard-handling";
14 import {registerRichText} from "@lexical/rich-text";
16 describe('Keyboard-handling service tests', () => {
17 initializeUnitTest((testEnv) => {
19 test('Details: down key on last lines creates new sibling node', () => {
20 const {editor} = testEnv;
22 registerRichText(editor);
23 registerKeyboardHandling(createTestContext(testEnv));
25 let lastRootChild!: LexicalNode|null;
26 let detailsPara!: ParagraphNode;
28 editor.updateAndCommit(() => {
29 const root = $getRoot()
30 const details = $createDetailsNode();
31 detailsPara = $createParagraphNode();
32 details.append(detailsPara);
33 $getRoot().append(details);
36 lastRootChild = root.getLastChild();
39 expect(lastRootChild).toBeInstanceOf(DetailsNode);
41 dispatchKeydownEventForNode(detailsPara, editor, 'ArrowDown');
42 editor.commitUpdates();
44 editor.getEditorState().read(() => {
45 lastRootChild = $getRoot().getLastChild();
48 expect(lastRootChild).toBeInstanceOf(ParagraphNode);
51 test('Details: enter on last empy block creates new sibling node', () => {
52 const {editor} = testEnv;
54 registerRichText(editor);
55 registerKeyboardHandling(createTestContext(testEnv));
57 let lastRootChild!: LexicalNode|null;
58 let detailsPara!: ParagraphNode;
60 editor.updateAndCommit(() => {
61 const root = $getRoot()
62 const details = $createDetailsNode();
63 const text = $createTextNode('Hello!');
64 detailsPara = $createParagraphNode();
65 detailsPara.append(text);
66 details.append(detailsPara);
67 $getRoot().append(details);
70 lastRootChild = root.getLastChild();
73 expect(lastRootChild).toBeInstanceOf(DetailsNode);
75 dispatchKeydownEventForNode(detailsPara, editor, 'Enter');
76 editor.commitUpdates();
78 dispatchKeydownEventForSelectedNode(editor, 'Enter');
79 editor.commitUpdates();
81 let detailsChildren!: LexicalNode[];
82 let lastDetailsText!: string;
84 editor.getEditorState().read(() => {
85 detailsChildren = (lastRootChild as DetailsNode).getChildren();
86 lastRootChild = $getRoot().getLastChild();
87 lastDetailsText = detailsChildren[0].getTextContent();
90 expect(lastRootChild).toBeInstanceOf(ParagraphNode);
91 expect(detailsChildren).toHaveLength(1);
92 expect(lastDetailsText).toBe('Hello!');