diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-05-04 16:10:50 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-05-04 16:10:50 +0200 |
| commit | ac63dfc8f48fa6451b4ef94e24e784f252b84f8e (patch) | |
| tree | 768b741e1a34a94b95977d8ff869143aab73617e /addons/mail/static/tests/chat_window_tests.js | |
| parent | 62705aee69460457c1b9257ac30363754c60c973 (diff) | |
| parent | 8dade01e2c5b560864291fb3c437ccf5999aee12 (diff) | |
[MERGE] forward port branch 11.0 up to 8dade01e2c5
Diffstat (limited to 'addons/mail/static/tests/chat_window_tests.js')
| -rw-r--r-- | addons/mail/static/tests/chat_window_tests.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/addons/mail/static/tests/chat_window_tests.js b/addons/mail/static/tests/chat_window_tests.js index ab5a9f03538..05bbc418e70 100644 --- a/addons/mail/static/tests/chat_window_tests.js +++ b/addons/mail/static/tests/chat_window_tests.js @@ -61,6 +61,84 @@ QUnit.module('mail', { parent.destroy(); }); + QUnit.test('open document viewer and close using ESCAPE key should reset focus to chat window', function (assert) { + assert.expect(6); + + function createParent(params) { + var widget = new Widget(); + + testUtils.addMockEnvironment(widget, params); + return widget; + } + var messages = [{ + attachment_ids: [{ + filename: 'image1.jpg', + id:1, + mimetype: 'image/jpeg', + name: 'Test Image 1', + url: '/web/content/1?download=true' + }], + author_id: ["1", "John Doe"], + body: "A message", + date: moment("2016-12-20 09:35:40"), + displayed_author: "John Doe", + id: 1, + is_note: false, + is_starred: false, + model: 'partner', + res_id: 2 + }]; + var parent = createParent({ + mockRPC: function (route, args) { + if(_.str.contains(route, '/mail/attachment/preview/') || + _.str.contains(route, '/web/static/lib/pdfjs/web/viewer.html')){ + var canvas = document.createElement('canvas'); + return $.when(canvas.toDataURL()); + } + return this._super.apply(this, arguments); + }, + data: {}, + }); + + var chatWindow = new ChatWindow(parent, 1, "user", false, messages.length, {}); + chatWindow.appendTo($('#qunit-fixture')); + chatWindow.render(messages); + + testUtils.intercept(chatWindow, 'get_messages', function(event) { + event.stopPropagation(); + var requested_msgs = _.filter(messages, function (msg) { + return _.contains(event.data.options.ids, msg.id); + }); + event.data.callback($.when(requested_msgs)); + }, true); + + testUtils.intercept(chatWindow, 'get_bus', function(event) { + event.stopPropagation(); + event.data.callback(new Bus()); + }, true); + + chatWindow.on('document_viewer_closed', null, function () { + assert.ok(true, "chat window should trigger a close document viewer event"); + }); + assert.strictEqual(chatWindow.$('.o_thread_message .o_attachment').length, 1, + "there should be three attachment on message"); + // click on first image attachement + chatWindow.$('.o_thread_message .o_attachment .o_image_box .o_image_overlay').first().click(); + // check focus is on document viewer popup and then press escape to close it + assert.strictEqual(document.activeElement, $('.o_modal_fullscreen')[0], "Modal popup should have focus"); + assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[src*="/web/image/1?unique=1"]').length, 1, + "Modal popup should open with first image src"); + // trigger ESCAPE keyup on document viewer popup + var upKeyEvent = jQuery.Event("keyup", {which: 27}); + $('.o_modal_fullscreen').trigger(upKeyEvent); + assert.strictEqual(document.activeElement, chatWindow.$input[0], + "input should be focused"); + var upKeyEvent = jQuery.Event( "keyup", {which: 27}); + chatWindow.$('.o_composer_input').trigger(upKeyEvent); + assert.strictEqual(chatWindow.folded, false, "Closed chat Window"); + parent.destroy(); + }); + QUnit.test('chat window\'s input can still be focused when the UI is blocked', function (assert) { assert.expect(2); |
