mirror of
https://github.com/bringout/oca-ocb-web.git
synced 2026-04-18 23:32:03 +02:00
replace stale web_editor with html_editor and html_builder for 19.0
web_editor was removed in Odoo 19.0 and replaced by html_editor
and html_builder. The old web_editor was incorrectly included in
the 19.0 vanilla import.
🤖 assisted by claude
This commit is contained in:
parent
4b94f0abc5
commit
f866779561
1513 changed files with 396049 additions and 358525 deletions
|
|
@ -0,0 +1,116 @@
|
|||
import { describe, expect, test } from "@odoo/hoot";
|
||||
import { waitFor, waitForNone, press, manuallyDispatchProgrammaticEvent } from "@odoo/hoot-dom";
|
||||
import { setupEditor, testEditor } from "./_helpers/editor";
|
||||
import { getContent } from "./_helpers/selection";
|
||||
import { insertText, splitBlock } from "./_helpers/user_actions";
|
||||
|
||||
async function simulateEnter(editor) {
|
||||
press("enter");
|
||||
await manuallyDispatchProgrammaticEvent(editor.editable, "beforeinput", {
|
||||
inputType: "insertParagraph",
|
||||
});
|
||||
}
|
||||
|
||||
describe("Blockquote", () => {
|
||||
describe("SplitBlock", () => {
|
||||
test("should force <br> in blockquote", async () => {
|
||||
await testEditor({
|
||||
contentBefore: "<blockquote>abc[]</blockquote>",
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: "<blockquote>abc<br>[]<br></blockquote>",
|
||||
});
|
||||
});
|
||||
test("should force <br> in blockquote containing inline element", async () => {
|
||||
await testEditor({
|
||||
contentBefore: "<blockquote>ab<strong>c[]</strong></blockquote>",
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: "<blockquote>ab<strong>c<br>[]<br></strong></blockquote>",
|
||||
});
|
||||
});
|
||||
test("should force <br> in empty blockquote", async () => {
|
||||
await testEditor({
|
||||
contentBefore: "<blockquote>[]<br></blockquote>",
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: "<blockquote><br>[]<br></blockquote>",
|
||||
});
|
||||
});
|
||||
test("should insert a new paragraph within the blockquote", async () => {
|
||||
await testEditor({
|
||||
contentBefore: "<blockquote><p>abc</p><p>def[]</p></blockquote>",
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: "<blockquote><p>abc</p><p>def</p><p>[]<br></p></blockquote>",
|
||||
});
|
||||
});
|
||||
test("should move an empty paragraph after the blockquote if at the end", async () => {
|
||||
await testEditor({
|
||||
contentBefore: "<blockquote><p>abc</p><p>def</p><p>[]<br></p></blockquote>",
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: "<blockquote><p>abc</p><p>def</p></blockquote><p>[]<br></p>",
|
||||
});
|
||||
});
|
||||
test("should insert a new paragraph within the blockquote tag with rtl direction", async () => {
|
||||
await testEditor({
|
||||
contentBefore: `<blockquote dir="rtl">ab[]</blockquote>`,
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: `<blockquote dir="rtl">ab<br>[]<br></blockquote>`,
|
||||
});
|
||||
});
|
||||
test("should insert a new paragraph within the blockquote tag with rtl direction (2)", async () => {
|
||||
await testEditor({
|
||||
contentBefore: `<blockquote><p dir="rtl">abc[]</p></blockquote>`,
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: `<blockquote><p dir="rtl">abc</p><p dir="rtl">[]<br></p></blockquote>`,
|
||||
});
|
||||
});
|
||||
test("should move an empty paragraph after the blockquote with rtl direction if at the end", async () => {
|
||||
await testEditor({
|
||||
contentBefore: `<blockquote><p dir="rtl">abc</p><p dir="rtl">[]<br></p></blockquote>`,
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: `<blockquote><p dir="rtl">abc</p></blockquote><p dir="rtl">[]<br></p>`,
|
||||
});
|
||||
});
|
||||
test("should move an empty paragraph after the blockquote with rtl direction if at the end (2)", async () => {
|
||||
await testEditor({
|
||||
contentBefore: `<blockquote dir="rtl"><p>abc</p><p>[]<br></p></blockquote>`,
|
||||
stepFunction: splitBlock,
|
||||
contentAfter: `<blockquote dir="rtl"><p>abc</p></blockquote><p dir="rtl">[]<br></p>`,
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Enter Key", () => {
|
||||
test("blockquote should create br on Enter", async () => {
|
||||
const { el, editor } = await setupEditor("<p>ab[]</p>");
|
||||
expect(getContent(el)).toBe(`<p>ab[]</p>`);
|
||||
|
||||
await insertText(editor, "/");
|
||||
await waitFor(".o-we-powerbox");
|
||||
|
||||
await insertText(editor, "quote");
|
||||
await press("enter");
|
||||
await waitForNone(".o-we-powerbox");
|
||||
expect(getContent(el)).toBe("<blockquote>ab[]</blockquote>");
|
||||
|
||||
await insertText(editor, "c");
|
||||
await simulateEnter(editor);
|
||||
expect(getContent(el)).toBe("<blockquote>abc<br>[]<br></blockquote>");
|
||||
await insertText(editor, "d");
|
||||
expect(getContent(el)).toBe("<blockquote>abc<br>d[]</blockquote>");
|
||||
await insertText(editor, "ef");
|
||||
expect(getContent(el)).toBe("<blockquote>abc<br>def[]</blockquote>");
|
||||
});
|
||||
test("blockquote should create br on Enter (2)", async () => {
|
||||
const { el, editor } = await setupEditor("<blockquote>a[]b</blockquote>");
|
||||
await simulateEnter(editor);
|
||||
expect(getContent(el)).toBe("<blockquote>a<br>[]b</blockquote>");
|
||||
});
|
||||
test("blockquote should create br on 1st Enter then create p", async () => {
|
||||
const { el, editor } = await setupEditor("<blockquote>abc<br>def[]</blockquote>");
|
||||
await simulateEnter(editor);
|
||||
expect(getContent(el)).toBe("<blockquote>abc<br>def<br>[]<br></blockquote>");
|
||||
await simulateEnter(editor);
|
||||
expect(getContent(el)).toBe(
|
||||
'<blockquote>abc<br>def</blockquote><p o-we-hint-text=\'Type "/" for commands\' class="o-we-hint">[]<br></p>'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue