/* @odoo-module */ import { startServer } from "@bus/../tests/helpers/mock_python_environment"; import { Composer } from "@mail/core/common/composer"; import { start } from "@mail/../tests/helpers/test_utils"; import { patchWithCleanup } from "@web/../tests/helpers/utils"; import { click, contains, insertText } from "@web/../tests/utils"; QUnit.module("composer", { async beforeEach() { // Simulate real user interactions patchWithCleanup(Composer.prototype, { isEventTrusted() { return true; }, }); }, }); QUnit.test('do not send typing notification on typing "/" command', async (assert) => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "channel" }); const { openDiscuss } = await start({ async mockRPC(route, args) { if (route === "/discuss/channel/notify_typing") { assert.step(`notify_typing:${args.is_typing}`); } }, }); openDiscuss(channelId); await insertText(".o-mail-Composer-input", "/"); assert.verifySteps([], "No rpc done"); }); QUnit.test( 'do not send typing notification on typing after selecting suggestion from "/" command', async (assert) => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "channel" }); const { openDiscuss } = await start({ async mockRPC(route, args) { if (route === "/discuss/channel/notify_typing") { assert.step(`notify_typing:${args.is_typing}`); } }, }); openDiscuss(channelId); await insertText(".o-mail-Composer-input", "/"); await click(":nth-child(1 of .o-mail-Composer-suggestion)"); await contains(".o-mail-Composer-suggestion strong", { count: 0 }); await insertText(".o-mail-Composer-input", " is user?"); assert.verifySteps([], "No rpc done"); } ); QUnit.test("add an emoji after a command", async () => { const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General", channel_type: "channel", }); const { openDiscuss } = await start(); openDiscuss(channelId); await contains(".o-mail-Composer-input", { value: "" }); await insertText(".o-mail-Composer-input", "/"); await click(":nth-child(1 of .o-mail-Composer-suggestion)"); await contains(".o-mail-Composer-input", { value: "/who " }); await click("button[aria-label='Emojis']"); await click(".o-Emoji", { text: "😊" }); await contains(".o-mail-Composer-input", { value: "/who 😊" }); });