diff options
Diffstat (limited to 'addons/mail/static/tests/document_thread_window_tests.js')
| -rw-r--r-- | addons/mail/static/tests/document_thread_window_tests.js | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/addons/mail/static/tests/document_thread_window_tests.js b/addons/mail/static/tests/document_thread_window_tests.js deleted file mode 100644 index c4a84040433..00000000000 --- a/addons/mail/static/tests/document_thread_window_tests.js +++ /dev/null @@ -1,325 +0,0 @@ -odoo.define('mail.documentThreadWindowTests', function (require) { -"use strict"; - -const Bus = require('web.Bus'); -const LocalStorageService = require('web.LocalStorageService'); -var mailTestUtils = require('mail.testUtils'); -var MessagingMenu = require('mail.systray.MessagingMenu'); - -var testUtils = require('web.test_utils'); - -QUnit.module('mail', {}, function () { -QUnit.module('Thread Window', {}, function () { -QUnit.module('Document Thread', { - beforeEach: function () { - var partnerID = 44; - this.data = { - 'mail.message': { - fields: { - body: { - string: "Contents", - type: 'html', - }, - author_id: { - string: "Author", - type: 'many2one', - relation: 'res.partner', - }, - channel_ids: { - string: "Channels", - type: 'many2many', - relation: 'mail.channel', - }, - starred: { - string: "Starred", - type: 'boolean', - }, - needaction: { - string: "Need Action", - type: 'boolean', - }, - needaction_partner_ids: { - string: 'Needaction Partner IDs', - type: 'one2many', - relation: 'res.partner', - }, - starred_partner_ids: { - string: "partner ids", - type: 'integer', - } - }, - records: [{ - id: 1, - author_id: [partnerID, 'Me'], - body: '<p>Some Message on a document</p>', - channel_ids: [], - model: 'some.res.model', - record_name: "Some Record", - res_id: 1, - }, { - author_id: [2, "Demo"], - body: "<p>*MessageOnDocument*</p>", - id: 2, - model: 'some.res.model', - needaction: true, - needaction_partner_ids: [partnerID], - record_name: "Some Record", - res_id: 1, - }], - }, - 'some.res.model': { - fields: { - message_ids: {string: 'Messages', type: 'one2many'}, - }, - records: [{ - id: 1, - message_ids: [1, 2], - }], - }, - initMessaging: { - channel_slots: { - channel_channel: [], - }, - }, - }; - this.session = { - partner_id: partnerID, // so that needaction messages are treated as needactions - }; - this.services = mailTestUtils.getMailServices(); - }, -}); - -QUnit.test('open a document thread in a thread window', async function (assert) { - assert.expect(6); - - var messagingMenu = new MessagingMenu(); - await testUtils.mock.addMockEnvironment(messagingMenu, { - services: this.services, - data: this.data, - session: this.session, - mockRPC: function (route, args) { - if (args.method === 'read') { - assert.deepEqual(args.args, [[1], ['message_ids']], - "should read the message_ids on the document"); - } - if (args.method === 'message_format') { - assert.deepEqual(args.args[0], [1], - "should only fetch the unknown message"); - } - return this._super.apply(this, arguments); - }, - }); - await messagingMenu.appendTo($('#qunit-fixture')); - - // toggle the messaging menu and open the documentThread - await testUtils.dom.click(messagingMenu.$('.dropdown-toggle')); - assert.containsOnce(messagingMenu, '.o_mail_preview', - "should display one preview"); - await testUtils.dom.click(messagingMenu.$('.o_mail_preview')); - - assert.strictEqual($('.o_thread_window').length, 1, - "should have open the DocumentThread in a thread window"); - assert.strictEqual($('.o_thread_window .o_thread_message').length, 2, - "should have fetched the history of the documentThread"); - assert.strictEqual($('.o_thread_window_title').text().trim(), 'Some Record', - "should display the display_name of the record in the header"); - - messagingMenu.destroy(); -}); - -QUnit.test('expand a document thread window', async function (assert) { - assert.expect(4); - - const bus = new Bus(); - bus.on('do-action', null, function (payload) { - assert.deepEqual(payload.action, { - res_id: 1, - res_model: 'some.res.model', - type: 'ir.actions.act_window', - views: [[false, 'form']], - }, "should open the document in form view"); - }); - - var messagingMenu = new MessagingMenu(); - await testUtils.mock.addMockEnvironment(messagingMenu, { - services: this.services, - data: this.data, - session: this.session, - env: { - bus - }, - }); - await messagingMenu.appendTo($('#qunit-fixture')); - - // toggle the messaging menu and open the documentThread - await testUtils.dom.click(messagingMenu.$('.dropdown-toggle')); - assert.containsOnce(messagingMenu, '.o_mail_preview', - "should display one preview"); - await testUtils.dom.click(messagingMenu.$('.o_mail_preview')); - assert.strictEqual($('.o_thread_window').length, 1, - "should have open the DocumentThread in a thread window"); - - assert.hasAttrValue($('.o_thread_window .o_thread_window_expand'), 'title', - 'Open document', "button should have correct title"); - - // click to expand - await testUtils.dom.click($('.o_thread_window .o_thread_window_expand')); - - messagingMenu.destroy(); -}); - -QUnit.test('post messages in a document thread window', async function (assert) { - assert.expect(8); - - var newMessageBody = 'Some message'; - var newMessage = { - id: 6783, - author_id: [this.session.partner_id, 'Me'], - body: newMessageBody, - channel_ids: [], - model: 'some.res.model', - record_name: "Some Record", - res_id: 1, - }; - var messagingMenu = new MessagingMenu(); - const MockedLocalStorageService = LocalStorageService.extend({ - setItem(key, value) { - if (key === 'mail.document_threads_last_message') { - assert.deepEqual(value.messageData, newMessage, - "should write sent message in local storage, to share info with other tabs"); - } - }, - }); - await testUtils.mock.addMockEnvironment(messagingMenu, { - services: Object.assign(this.services, { - local_storage: MockedLocalStorageService, - }), - data: this.data, - session: this.session, - mockRPC: function (route, args) { - if (args.method === 'message_post') { - assert.strictEqual(args.model, 'some.res.model', - "should post the message on the correct model"); - assert.deepEqual(args.args, [1], - "should post the message on the correct record"); - assert.strictEqual(args.kwargs.body, newMessageBody, - "should post correct message"); - - // add the message to the fake DB - this.data['mail.message'].records.push(newMessage); - this.data['some.res.model'].records[0].message_ids.push(6783); - return Promise.resolve(6783); - } - return this._super.apply(this, arguments); - }, - }); - - await messagingMenu.appendTo($('#qunit-fixture')); - - // toggle the messaging menu and open the documentThread - await testUtils.dom.click(messagingMenu.$('.dropdown-toggle')); - assert.containsOnce(messagingMenu, '.o_mail_preview', - "should display one preview"); - await testUtils.dom.click(messagingMenu.$('.o_mail_preview')); - assert.strictEqual($('.o_thread_window').length, 1, - "should have open the DocumentThread in a thread window"); - assert.strictEqual($('.o_thread_window .o_thread_message').length, 2, - "should display 2 messages in the thread window"); - - // post a message - await testUtils.fields.editAndTrigger($('.o_thread_window .o_composer_text_field'), newMessageBody, - [$.Event('keydown', {which: $.ui.keyCode.ENTER})]); - assert.strictEqual($('.o_thread_window .o_thread_message').length, 3, - "should display 3 messages in the thread window"); - - messagingMenu.destroy(); -}); - -QUnit.test('open, fold, unfold and close a document thread window', async function (assert) { - assert.expect(20); - var messagingMenu = new MessagingMenu(); - const MockedLocalStorageService = LocalStorageService.extend({ - setItem(key, value) { - if (key === 'mail.document_threads_state/some.res.model_1') { - const state = value.state; - assert.ok(state); - assert.ok(state.name); - assert.ok(state.windowState); - assert.step(`${key}: { name: "${state.name}", windowState: '${state.windowState}' }`); - } - } - }); - await testUtils.mock.addMockEnvironment(messagingMenu, { - services: Object.assign(this.services, { - local_storage: MockedLocalStorageService, - }), - data: this.data, - session: this.session, - }); - await testUtils.nextTick(); - await messagingMenu.appendTo($('#qunit-fixture')); - - // toggle the messaging menu and open the documentThread - await testUtils.dom.click(messagingMenu.$('.dropdown-toggle')); - assert.containsOnce(messagingMenu, '.o_mail_preview', - "should display one preview"); - await testUtils.dom.click(messagingMenu.$('.o_mail_preview')); - assert.strictEqual($('.o_thread_window').length, 1, - "should have open the DocumentThread in a thread window"); - assert.strictEqual($('.o_thread_window .o_thread_message').length, 2, - "should display 2 messages in the thread window"); - - // fold and unfold thread window - await testUtils.dom.click($('.o_thread_window .o_thread_window_title')); - await testUtils.nextTick(); - await testUtils.dom.click($('.o_thread_window .o_thread_window_title')); - await testUtils.nextTick(); - - // close thread window - await testUtils.dom.click($('.o_thread_window .o_thread_window_close')); - await testUtils.nextTick(); - - assert.verifySteps([ - `mail.document_threads_state/some.res.model_1: { name: "Some Record", windowState: 'open' }`, - `mail.document_threads_state/some.res.model_1: { name: "Some Record", windowState: 'folded' }`, - `mail.document_threads_state/some.res.model_1: { name: "Some Record", windowState: 'open' }`, - `mail.document_threads_state/some.res.model_1: { name: "Some Record", windowState: 'closed' }`, - ]); - - messagingMenu.destroy(); -}); - -QUnit.test('do not open thread window on fetch message failure', async function (assert) { - // this may happen when the user receives a notification from a document - // that he does not have access rights at the moment. - assert.expect(4); - - var messagingMenu = new MessagingMenu(); - await testUtils.mock.addMockEnvironment(messagingMenu, { - services: this.services, - data: this.data, - session: this.session, - mockRPC: function (route, args) { - if (args.method === 'read' && args.model === 'some.res.model' && args.args[0][0] === 1) { - assert.step('some.res.model/1/read'); - return Promise.reject(); // simulate failure - } - return this._super.apply(this, arguments); - }, - }); - await messagingMenu.appendTo($('#qunit-fixture')); - - await testUtils.dom.click(messagingMenu.$('.dropdown-toggle')); - assert.containsOnce(messagingMenu, '.o_mail_preview'); - - await testUtils.dom.click(messagingMenu.$('.o_mail_preview')); - assert.verifySteps(['some.res.model/1/read']); - assert.strictEqual($('.o_thread_window').length, 0, - "should not have open the DocumentThread in a thread window on fetch messages failure"); - - messagingMenu.destroy(); -}); - -}); -}); -}); |
