diff --git a/addons/mail/static/src/views/web/fields/emojis_char_field/emojis_char_field.js b/addons/mail/static/src/views/web/fields/emojis_char_field/emojis_char_field.js index a4c0f1b968f..461057afd8f 100644 --- a/addons/mail/static/src/views/web/fields/emojis_char_field/emojis_char_field.js +++ b/addons/mail/static/src/views/web/fields/emojis_char_field/emojis_char_field.js @@ -16,6 +16,10 @@ export class EmojisCharField extends EmojisFieldCommon(CharField) { this.targetEditElement = useRef("input"); this._setupOverride(); } + + get shouldTrim() { + return false; + } } EmojisCharField.template = "mail.EmojisCharField"; diff --git a/addons/mail/static/tests/qunit_suite_tests/widgets/emojis_char_field_tests.js b/addons/mail/static/tests/qunit_suite_tests/widgets/emojis_char_field_tests.js new file mode 100644 index 00000000000..87c3f5a0114 --- /dev/null +++ b/addons/mail/static/tests/qunit_suite_tests/widgets/emojis_char_field_tests.js @@ -0,0 +1,63 @@ +/** @odoo-module **/ + +import { click, editInput, nextTick } from "@web/../tests/helpers/utils"; +import { setupViewRegistries } from "@web/../tests/views/helpers"; +import { start } from "@mail/../tests/helpers/test_utils"; +import { addFakeModel } from "@bus/../tests/helpers/model_definitions_helpers"; + +let serverData; + +QUnit.module("mail", {}, () => { +QUnit.module("widgets", {}, (hooks) => { + addFakeModel("mailing.mailing", { + subject: { string: "Subject", type: "char", trim: true } + }); + + hooks.beforeEach(() => { + serverData = { + views: { + "mailing.mailing,false,form": ` +
+ ` + }, + } + setupViewRegistries(); + }); + + QUnit.module("emojis_char_field_tests.js"); + + QUnit.test("emojis_char_field_tests widget: insert emoji at end of word", async function (assert) { + assert.expect(2); + const {openFormView} = await start({serverData}); + await openFormView("mailing.mailing"); + + const inputName = document.querySelector("input#subject_0"); + await editInput(inputName, null, "Hello"); + assert.strictEqual(inputName.value, "Hello"); + + click(document, ".o_field_char_emojis button"); + await nextTick(); + click(document, '.o-Emoji[data-codepoints="π"]'); + assert.strictEqual(inputName.value, "Helloπ"); + }); + + QUnit.test("emojis_char_field_tests widget: insert emoji as new word", async function (assert) { + assert.expect(2); + const {openFormView} = await start({serverData}); + await openFormView("mailing.mailing"); + + const inputName = document.querySelector("input#subject_0"); + await editInput(inputName, null, "Hello "); + assert.strictEqual(inputName.value, "Hello "); + + click(document, ".o_field_char_emojis button"); + await nextTick(); + click(document, '.o-Emoji[data-codepoints="π"]'); + assert.strictEqual(inputName.value, "Hello π"); + }); + + +}); +});