diff options
Diffstat (limited to 'addons/mail/static/src/components/composer/composer_tests.js')
| -rw-r--r-- | addons/mail/static/src/components/composer/composer_tests.js | 59 |
1 files changed, 57 insertions, 2 deletions
diff --git a/addons/mail/static/src/components/composer/composer_tests.js b/addons/mail/static/src/components/composer/composer_tests.js index d8b369910b1..a7819454b8e 100644 --- a/addons/mail/static/src/components/composer/composer_tests.js +++ b/addons/mail/static/src/components/composer/composer_tests.js @@ -2003,7 +2003,7 @@ QUnit.test('send message only once when button send is clicked twice quickly', a assert.verifySteps( ['message_post'], "The message has been posted only once" - ) + ); }); QUnit.test('send message only once when enter is pressed twice quickly', async function (assert) { @@ -2040,7 +2040,62 @@ QUnit.test('send message only once when enter is pressed twice quickly', async f assert.verifySteps( ['message_post'], "The message has been posted only once" - ) + ); +}); + +QUnit.test("mentioned partners should not be notified if they are not member of current channel", async function (assert) { + assert.expect(4); + + this.data['res.partner'].records.push({ + email: "testpartner@example.com", + name: "TestPartner", + }); + this.data['mail.channel'].records.push({ + id: 10, + members: [this.data.currentPartnerId], + }); + await this.start({ + async mockRPC(route, args) { + if (args.model === 'mail.channel' && args.method === 'message_post') { + assert.step('message_post'); + assert.strictEqual( + args.kwargs.partner_ids.length, + 0, + "message_post should not contain mentioned partners that are not members of channel" + ); + } + return this._super(...arguments); + }, + }); + const thread = this.env.models['mail.thread'].findFromIdentifyingData({ + id: 10, + model: 'mail.channel', + }); + await this.createComposerComponent(thread.composer); + await afterNextRender(() => { + document.querySelector(`.o_ComposerTextInput_textarea`).focus(); + document.execCommand('insertText', false, "@"); + document.querySelector(`.o_ComposerTextInput_textarea`) + .dispatchEvent(new window.KeyboardEvent('keydown')); + document.querySelector(`.o_ComposerTextInput_textarea`) + .dispatchEvent(new window.KeyboardEvent('keyup')); + }); + await afterNextRender(() => { + document.querySelector(`.o_ComposerTextInput_textarea`).focus(); + document.execCommand('insertText', false, "Test"); + document.querySelector(`.o_ComposerTextInput_textarea`) + .dispatchEvent(new window.KeyboardEvent('keydown')); + document.querySelector(`.o_ComposerTextInput_textarea`) + .dispatchEvent(new window.KeyboardEvent('keyup')); + }); + await afterNextRender(() => document.querySelector('.o_ComposerSuggestion').click()); + assert.strictEqual( + document.querySelector(`.o_ComposerTextInput_textarea`).value.replace(/\s/, " "), + "@TestPartner ", + "text content of composer should have mentioned partner + additional whitespace afterwards" + ); + await afterNextRender(() => document.querySelector('.o_Composer_buttonSend').click()); + assert.verifySteps(['message_post'], "the message should be posted"); }); }); |
