diff --git a/addons/mail/static/src/js/field_emojis_common.js b/addons/mail/static/src/js/field_emojis_common.js index b1498c5ae05..2a32decb3fe 100644 --- a/addons/mail/static/src/js/field_emojis_common.js +++ b/addons/mail/static/src/js/field_emojis_common.js @@ -131,6 +131,13 @@ var FieldEmojiCommon = { } else { this.$emojisIcon.hide(); } + }, + + destroy() { + this._super(...arguments); + if (this.$emojisIcon) { + this.$emojisIcon.remove(); + } } }; diff --git a/addons/mail/static/tests/qunit_suite_tests/components/field_text_emojis_tests.js b/addons/mail/static/tests/qunit_suite_tests/components/field_text_emojis_tests.js new file mode 100644 index 00000000000..b48a21bf78f --- /dev/null +++ b/addons/mail/static/tests/qunit_suite_tests/components/field_text_emojis_tests.js @@ -0,0 +1,46 @@ +/**@odoo-module **/ + +import { clickEdit, clickSave, getFixture } from "@web/../tests/helpers/utils"; +import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; + +QUnit.module("Field text emojis", (hooks) => { + let target = undefined; + let serverData = undefined; + hooks.beforeEach(() => { + target = getFixture(); + + serverData = { + models: { + partner: { + fields: { + foo: { type: "char" } + }, + records: [{ id: 1 }] + } + } + }; + + setupViewRegistries(); + }); + + QUnit.test("emojis button is not shown in readonly", async (assert) => { + await makeView({ + type: "form", + resId: 1, + resModel: "partner", + arch: `
`, + serverData + }); + + assert.containsOnce(target, ".o_field_text_emojis"); + assert.containsOnce(target, ".o_field_text_emojis button"); + assert.isNotVisible(target.querySelector(".o_field_text_emojis button")); + + await clickEdit(target); + assert.isVisible(target, ".o_field_text_emojis button .fa-smile"); + + await clickSave(target); + assert.containsOnce(target, ".o_field_text_emojis button"); + assert.isNotVisible(target.querySelector(".o_field_text_emojis button")); + }); +});