From 2ba215729bbbe82af6c30b68799e241657de4e0a Mon Sep 17 00:00:00 2001 From: Julien Castiaux Date: Wed, 6 Sep 2023 12:19:26 +0000 Subject: [PATCH] [FIX] mass_mailing: add test for emoji widget Go to the form view of mailing.mailing, write "hello " as the subject, insert an emoji, you end up with "hello:)" instead of "hello :)". The problem is that when the input loose the focus, it is automatically trim. Reconfigure the `char_emojis` widget so that is doesn't trim. task-id-3493168 closes odoo/odoo#136530 X-original-commit: 2adda1eb2760ccf970761f424105e245afc3de3f Signed-off-by: Thibault Delavallee (tde) Signed-off-by: Julien Castiaux (juc) --- .../emojis_char_field/emojis_char_field.js | 4 ++ .../widgets/emojis_char_field_tests.js | 63 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 addons/mail/static/tests/qunit_suite_tests/widgets/emojis_char_field_tests.js 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 πŸ˜€"); + }); + + +}); +});