From c56c5ca28ff1dccf180df2615df0afe4fb4853c9 Mon Sep 17 00:00:00 2001 From: "Louis Wicket (wil)" Date: Tue, 5 Jul 2022 08:37:47 +0000 Subject: [PATCH] [FIX] mail: don't crash on click reply MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix bug introduced in https://github.com/odoo/odoo/pull/94948. Add test for MessageInReplyToView. closes odoo/odoo#95303 Signed-off-by: Sébastien Theys (seb) --- .../src/models/message_in_reply_to_view.js | 12 +++--- .../message_in_reply_to_view_tests.js | 43 +++++++++++++++++++ 2 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 addons/mail/static/tests/qunit_suite_tests/components/message_in_reply_to_view_tests.js diff --git a/addons/mail/static/src/models/message_in_reply_to_view.js b/addons/mail/static/src/models/message_in_reply_to_view.js index ffb23a429b9..798f365a7b3 100644 --- a/addons/mail/static/src/models/message_in_reply_to_view.js +++ b/addons/mail/static/src/models/message_in_reply_to_view.js @@ -15,19 +15,19 @@ registerModel({ */ onClickReply(ev) { markEventHandled(ev, 'MessageInReplyToView.ClickMessageInReplyTo'); - const threadView = this.messageView && this.messageView.messageListViewMessageViewItemOwner && this.messageView.messageListViewMessageViewItemOwner.messageListViewOwner.threadViewOwner; + const messageListViewMessageViewItem = this.messageView && this.messageView.messageListViewMessageViewItemOwner; const parentMessage = this.messageView.message.parentMessage; - if (!threadView || !parentMessage) { + if (!messageListViewMessageViewItem || !parentMessage) { return; } - const parentMessageView = this.messaging.models['MessageView'].findFromIdentifyingData({ + const parentMessageListViewMessageViewItem = this.messaging.models['MessageListViewMessageViewItem'].findFromIdentifyingData({ message: replace(parentMessage), - threadView: replace(threadView), + messageListViewOwner: replace(messageListViewMessageViewItem.messageListViewOwner), }); - if (!parentMessageView) { + if (!parentMessageListViewMessageViewItem) { return; } - parentMessageView.update({ doHighlight: true }); + parentMessageListViewMessageViewItem.messageView.update({ doHighlight: true }); }, /** * @private diff --git a/addons/mail/static/tests/qunit_suite_tests/components/message_in_reply_to_view_tests.js b/addons/mail/static/tests/qunit_suite_tests/components/message_in_reply_to_view_tests.js new file mode 100644 index 00000000000..88e872a289b --- /dev/null +++ b/addons/mail/static/tests/qunit_suite_tests/components/message_in_reply_to_view_tests.js @@ -0,0 +1,43 @@ +/** @odoo-module **/ + +import { start, startServer } from '@mail/../tests/helpers/test_utils'; + +QUnit.module('mail', {}, function () { +QUnit.module('components', {}, function() { +QUnit.module('message_in_reply_to_view_tests'); + +QUnit.test('click on message in reply to highlights the parent message', async function (assert) { + assert.expect(1); + + const pyEnv = await startServer(); + const mailChannelId1 = pyEnv['mail.channel'].create({}); + const mailMessageId1 = pyEnv['mail.message'].create({ + body: "Hey lol", + message_type: 'comment', + model: 'mail.channel', + res_id: mailChannelId1, + }); + const mailMessageId2 = pyEnv['mail.message'].create({ + body: "Response to Hey lol", + message_type: 'comment', + model: 'mail.channel', + parent_id: mailMessageId1, + res_id: mailChannelId1, + }); + const { click, openDiscuss } = await start({ + discuss: { + params: { + default_active_id: `mail.channel_${mailChannelId1}`, + }, + }, + }); + await openDiscuss(); + await click(`.o_Message[data-id="${mailMessageId2}"] .o_MessageInReplyToView_body`); + assert.containsOnce( + document.body, + `.o-highlighted[data-id="${mailMessageId1}"]`, + "click on message in reply to should highlight the parent message" + ); +}); +}); +});