summaryrefslogtreecommitdiff
path: root/addons/mail/static/tests/discuss_moderation_tests.js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-11-16 19:30:20 +0100
committerChristophe Simonis <chs@odoo.com>2018-11-16 19:30:20 +0100
commit6faad524cf5e4db02855cb213277c40aee14c42a (patch)
tree383c984dc1461a03481baa9fbdce8c156ca97e2e /addons/mail/static/tests/discuss_moderation_tests.js
parent3657dc77c2ddb4275f07d1271b93e7f25e09913a (diff)
parentbc744a1da46efda6f1eb5c341f2fa5df30c9c7ad (diff)
[MERGE] forward port branch 12.0 up to bc744a1da46
Diffstat (limited to 'addons/mail/static/tests/discuss_moderation_tests.js')
-rw-r--r--addons/mail/static/tests/discuss_moderation_tests.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/addons/mail/static/tests/discuss_moderation_tests.js b/addons/mail/static/tests/discuss_moderation_tests.js
index 51fb7b55c61..4d8e48b4dcb 100644
--- a/addons/mail/static/tests/discuss_moderation_tests.js
+++ b/addons/mail/static/tests/discuss_moderation_tests.js
@@ -1,6 +1,7 @@
odoo.define('mail.discuss_moderation_tests', function (require) {
"use strict";
+var Thread = require('mail.model.Thread');
var mailTestUtils = require('mail.testUtils');
var createDiscuss = mailTestUtils.createDiscuss;
@@ -760,5 +761,84 @@ QUnit.test('author: sent message rejected in moderated channel', function (asser
});
});
+QUnit.test('no crash when load-more fetching "accepted" message twice', function (assert) {
+ // This tests requires discuss not loading more messages due to having less
+ // messages to fetch than available height. This justifies we simply do not
+ // patch FETCH_LIMIT to 1, as it would detect that more messages could fit
+ // the empty space (it behaviour is linked to "auto load more").
+ var done = assert.async();
+ assert.expect(2);
+
+ var FETCH_LIMIT = Thread.prototype._FETCH_LIMIT;
+ // FETCH LIMIT + 30 should be enough to cover the whole available space in
+ // the thread of discuss app.
+ var messageData = [];
+ _.each(_.range(1, FETCH_LIMIT+31), function (num) {
+ messageData.push({
+ id: num,
+ body: "<p>test" + num + "</p>",
+ author_id: [100, "Someone"],
+ channel_ids: [1],
+ model: 'mail.channel',
+ res_id: 1,
+ moderation_status: 'accepted',
+ }
+ );
+ });
+
+ this.data['mail.message'].records = messageData;
+
+ this.data.initMessaging = {
+ channel_slots: {
+ channel_channel: [{
+ id: 1,
+ channel_type: "channel",
+ name: "general",
+ }],
+ },
+ };
+ var count = 0;
+
+ createDiscuss({
+ id: 1,
+ context: {},
+ params: {},
+ data: this.data,
+ services: this.services,
+ session: { partner_id: 3 },
+ mockRPC: function (route, args) {
+ if (args.method === 'message_fetch') {
+ count++;
+ if (count === 1) {
+ // inbox message_fetch
+ return $.when([]);
+ }
+ // general message_fetch
+ return $.when(messageData);
+ }
+ return this._super.apply(this, arguments);
+ },
+ })
+ .then(function (discuss) {
+ var $general = discuss.$('.o_mail_discuss_sidebar')
+ .find('.o_mail_discuss_item[data-thread-id=1]');
+ assert.strictEqual($general.length, 1,
+ "should have the channel item with id 1");
+ assert.strictEqual($general.attr('title'), 'general',
+ "should have the title 'general'");
+
+ // click on general
+ $general.click();
+
+ // simulate search
+ discuss.trigger_up('search', {
+ domains: [['author_id', '=', 100]],
+ });
+
+ discuss.destroy();
+ done();
+ });
+});
+
});
});