import { expect, test } from "@odoo/hoot"; import { click, manuallyDispatchProgrammaticEvent, press, waitFor } from "@odoo/hoot-dom"; import { animationFrame } from "@odoo/hoot-mock"; import { setupEditor } from "./_helpers/editor"; import { getContent, setSelection } from "./_helpers/selection"; import { insertText } from "./_helpers/user_actions"; import { loader } from "@web/core/emoji_picker/emoji_picker"; import { execCommand } from "./_helpers/userCommands"; test("should insert a banner with focus inside followed by a paragraph", async () => { const { el, editor } = await setupEditor("
Test[]
"); await insertText(editor, "/banner"); await animationFrame(); expect(".active .o-we-command-name").toHaveText("Banner Info"); await press("enter"); expect(getContent(el)).toBe( `Test
Test[]
"); await insertText(editor, "/bannerinfo"); await press("enter"); await insertText(editor, "Test1"); await manuallyDispatchProgrammaticEvent(editor.editable, "beforeinput", { inputType: "insertParagraph", }); await insertText(editor, "Test2"); await press(["ctrl", "a"]); expect(getContent(el)).toBe( `Test
Test[]
"); await insertText(editor, "/bannerinfo"); await press("enter"); await insertText(editor, "Test1"); await manuallyDispatchProgrammaticEvent(editor.editable, "beforeinput", { inputType: "insertParagraph", }); await insertText(editor, "Test2"); await press(["ctrl", "a"]); expect(getContent(el)).toBe( `Test
Test
[]
"); await insertText(editor, "/bannerinfo"); await press("enter"); // Move the selection outside of the banner setSelection({ anchorNode: el.querySelectorAll("p")[1], anchorOffset: 0 }); await insertText(editor, "Test1"); await manuallyDispatchProgrammaticEvent(editor.editable, "beforeinput", { inputType: "insertParagraph", }); await insertText(editor, "Test2"); await press(["ctrl", "a"]); expect(getContent(el)).toBe( `[\u200bTest1
Test2
[]
cd[]
' ); await press(["ctrl", "a"]); expect(getContent(el)).toBe( '[cd
]' ); await press("Backspace"); expect(getContent(el)).toBe( `[]
Test[]
"); await insertText(editor, "/bannerinfo"); await press("enter"); expect("i.o_editor_banner_icon").toHaveText("💡"); await loader.loadEmoji(); await click("i.o_editor_banner_icon"); await waitFor(".o-EmojiPicker"); await click(".o-EmojiPicker .o-Emoji"); await animationFrame(); expect("i.o_editor_banner_icon").toHaveText("😀"); execCommand(editor, "historyUndo"); expect("i.o_editor_banner_icon").toHaveText("💡"); execCommand(editor, "historyRedo"); expect("i.o_editor_banner_icon").toHaveText("😀"); }); test("add banner inside empty list", async () => { const { el, editor } = await setupEditor("