summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorSébastien Theys <seb@odoo.com>2020-09-02 10:00:40 +0000
committerSébastien Theys <seb@odoo.com>2020-09-02 11:08:28 +0000
commit6da14a3aadeb3efc40f145f6c11fc33314b2f15e (patch)
tree3935c9d28fc6552c327cead8f6d8a6edfcb7ab58 /addons
parenta47334294fd6bd005e65901431c0cd62760aa176 (diff)
[FIX] mail: prevent crash when switching mailbox in discuss mobile
task-2327203 closes odoo/odoo#56935 X-original-commit: 612a8f7edf3d01ec2b854839ee60be418cb141a7 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com> Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
Diffstat (limited to 'addons')
-rw-r--r--addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js6
-rw-r--r--addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection_tests.js98
-rw-r--r--addons/mail/views/assets.xml6
3 files changed, 109 insertions, 1 deletions
diff --git a/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js b/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js
index c2185a60dc0..d2fa4aa936a 100644
--- a/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js
+++ b/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js
@@ -73,7 +73,11 @@ class DiscussMobileMailboxSelection extends Component {
* @param {MouseEvent} ev
*/
_onClick(ev) {
- const { mailbox } = ev.currentTarget.dataset;
+ const { mailboxLocalId } = ev.currentTarget.dataset;
+ const mailbox = this.env.models['mail.thread'].get(mailboxLocalId);
+ if (!mailbox) {
+ return;
+ }
mailbox.open();
}
diff --git a/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection_tests.js b/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection_tests.js
new file mode 100644
index 00000000000..261d8c4bf54
--- /dev/null
+++ b/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection_tests.js
@@ -0,0 +1,98 @@
+odoo.define('mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection_tests.js', function (require) {
+'use strict';
+
+const {
+ afterEach,
+ afterNextRender,
+ beforeEach,
+ start,
+} = require('mail/static/src/utils/test_utils.js');
+
+QUnit.module('mail', {}, function () {
+QUnit.module('components', {}, function () {
+QUnit.module('discuss_mobile_mailbox_selection', {}, function () {
+QUnit.module('discuss_mobile_mailbox_selection_tests.js', {
+ beforeEach() {
+ beforeEach(this);
+
+ this.start = async params => {
+ const { env, widget } = await start(Object.assign(
+ {
+ autoOpenDiscuss: true,
+ data: this.data,
+ env: {
+ browser: {
+ innerHeight: 640,
+ innerWidth: 360,
+ },
+ device: {
+ isMobile: true,
+ },
+ },
+ hasDiscuss: true,
+ },
+ params,
+ ));
+ this.env = env;
+ this.widget = widget;
+ };
+ },
+ afterEach() {
+ afterEach(this);
+ },
+});
+
+QUnit.test('select another mailbox', async function (assert) {
+ assert.expect(7);
+
+ await this.start();
+ assert.containsOnce(
+ document.body,
+ '.o_Discuss',
+ "should display discuss initially"
+ );
+ assert.hasClass(
+ document.querySelector('.o_Discuss'),
+ 'o-mobile',
+ "discuss should be opened in mobile mode"
+ );
+ assert.containsOnce(
+ document.body,
+ '.o_Discuss_thread',
+ "discuss should display a thread initially"
+ );
+ assert.strictEqual(
+ document.querySelector('.o_Discuss_thread').dataset.threadLocalId,
+ this.env.messaging.inbox.localId,
+ "inbox mailbox should be opened initially"
+ );
+ assert.containsOnce(
+ document.body,
+ `.o_DiscussMobileMailboxSelection_button[
+ data-mailbox-local-id="${this.env.messaging.starred.localId}"
+ ]`,
+ "should have a button to open starred mailbox"
+ );
+
+ await afterNextRender(() =>
+ document.querySelector(`.o_DiscussMobileMailboxSelection_button[
+ data-mailbox-local-id="${this.env.messaging.starred.localId}"]
+ `).click()
+ );
+ assert.containsOnce(
+ document.body,
+ '.o_Discuss_thread',
+ "discuss should still have a thread after clicking on starred mailbox"
+ );
+ assert.strictEqual(
+ document.querySelector('.o_Discuss_thread').dataset.threadLocalId,
+ this.env.messaging.starred.localId,
+ "starred mailbox should be opened after clicking on it"
+ );
+});
+
+});
+});
+});
+
+});
diff --git a/addons/mail/views/assets.xml b/addons/mail/views/assets.xml
index 1b8d194df66..fce138c7ca4 100644
--- a/addons/mail/views/assets.xml
+++ b/addons/mail/views/assets.xml
@@ -296,5 +296,11 @@
<script type="text/javascript" src="/mail/static/src/widgets/notification_alert/notification_alert_tests.js"/>
</xpath>
</template>
+
+ <template id="qunit_mobile_suite" name="mail_qunit_mobile_suite" inherit_id="web.qunit_mobile_suite_tests">
+ <xpath expr="." position="inside">
+ <script type="text/javascript" src="/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection_tests.js"/>
+ </xpath>
+ </template>
</data>
</odoo>