diff --git a/addons/bus/static/tests/bus_tests.js b/addons/bus/static/tests/bus_tests.js index 551a145bda9..b13694a7afb 100644 --- a/addons/bus/static/tests/bus_tests.js +++ b/addons/bus/static/tests/bus_tests.js @@ -27,7 +27,7 @@ QUnit.module('Bus', { var pollPromise = testUtils.makeTestPromise(); var parent = new Widget(); - testUtils.mock.addMockEnvironment(parent, { + await testUtils.mock.addMockEnvironment(parent, { data: {}, services: { bus_service: BusService, @@ -101,7 +101,7 @@ QUnit.module('Bus', { var pollPromise = testUtils.makeTestPromise(); var parent = new Widget(); - testUtils.mock.addMockEnvironment(parent, { + await testUtils.mock.addMockEnvironment(parent, { data: {}, services: { bus_service: BusService, @@ -142,7 +142,7 @@ QUnit.module('Bus', { var pollPromiseMaster = testUtils.makeTestPromise(); var parentMaster = new Widget(); - testUtils.mock.addMockEnvironment(parentMaster, { + await testUtils.mock.addMockEnvironment(parentMaster, { data: {}, services: { bus_service: BusService, @@ -173,7 +173,7 @@ QUnit.module('Bus', { // slave await testUtils.nextTick(); var parentSlave = new Widget(); - testUtils.mock.addMockEnvironment(parentSlave, { + await testUtils.mock.addMockEnvironment(parentSlave, { data: {}, services: { bus_service: BusService, @@ -220,7 +220,7 @@ QUnit.module('Bus', { var pollPromiseMaster = testUtils.makeTestPromise(); var parentMaster = new Widget(); - testUtils.mock.addMockEnvironment(parentMaster, { + await testUtils.mock.addMockEnvironment(parentMaster, { data: {}, services: { bus_service: BusService, @@ -252,7 +252,7 @@ QUnit.module('Bus', { await testUtils.nextTick(); var parentSlave = new Widget(); var pollPromiseSlave = testUtils.makeTestPromise(); - testUtils.mock.addMockEnvironment(parentSlave, { + await testUtils.mock.addMockEnvironment(parentSlave, { data: {}, services: { bus_service: BusService, diff --git a/addons/calendar/static/tests/systray_activity_menu_tests.js b/addons/calendar/static/tests/systray_activity_menu_tests.js index 5a25792ff34..02937bae0ed 100644 --- a/addons/calendar/static/tests/systray_activity_menu_tests.js +++ b/addons/calendar/static/tests/systray_activity_menu_tests.js @@ -41,7 +41,7 @@ QUnit.test('activity menu widget:today meetings', async function (assert) { assert.expect(6); var self = this; var activityMenu = new ActivityMenu(); - testUtils.mock.addMockEnvironment(activityMenu, { + await testUtils.mock.addMockEnvironment(activityMenu, { services: this.services, mockRPC: function (route, args) { if (args.method === 'systray_get_activities') { diff --git a/addons/hr_attendance/static/tests/hr_attendance_tests.js b/addons/hr_attendance/static/tests/hr_attendance_tests.js index 22de18817ad..1fc06e7474e 100644 --- a/addons/hr_attendance/static/tests/hr_attendance_tests.js +++ b/addons/hr_attendance/static/tests/hr_attendance_tests.js @@ -59,7 +59,7 @@ QUnit.module('HR Attendance', { var $target = $('#qunit-fixture'); var clientAction = new MyAttendances(null, {}); - testUtils.mock.addMockEnvironment(clientAction, { + await testUtils.mock.addMockEnvironment(clientAction, { data: this.data, session: { uid: 1, @@ -80,7 +80,7 @@ QUnit.module('HR Attendance', { var self = this; var rpcCount = 0; var clientAction = new KioskMode(null, {}); - testUtils.mock.addMockEnvironment(clientAction, { + await testUtils.mock.addMockEnvironment(clientAction, { data: this.data, session: { uid: 1, @@ -124,7 +124,7 @@ QUnit.module('HR Attendance', { barcode: barcode, }; var clientAction = new GreetingMessage(null, action); - testUtils.mock.addMockEnvironment(clientAction, { + await testUtils.mock.addMockEnvironment(clientAction, { data: self.data, session: { uid: 1, diff --git a/addons/im_livechat/static/tests/website_livechat_window_tests.js b/addons/im_livechat/static/tests/website_livechat_window_tests.js index e8a296fa095..8907d790cb1 100644 --- a/addons/im_livechat/static/tests/website_livechat_window_tests.js +++ b/addons/im_livechat/static/tests/website_livechat_window_tests.js @@ -45,7 +45,7 @@ QUnit.test('basic rendering', async function (assert) { livechat.setMessages(messages); var chatWindow = new ChatWindow(parent, livechat); - testUtils.mock.addMockEnvironment(parent, {}); + await testUtils.mock.addMockEnvironment(parent, {}); await chatWindow.appendTo($('#qunit-fixture')); chatWindow.render(); @@ -95,7 +95,7 @@ QUnit.test('define several livechat colors', async function (assert) { headerBackgroundColor: 'yellow', titleColor: 'green', }); - testUtils.mock.addMockEnvironment(parent, {}); + await testUtils.mock.addMockEnvironment(parent, {}); await chatWindow.appendTo($('#qunit-fixture')); chatWindow.render(); assert.strictEqual( diff --git a/addons/mail/static/tests/document_thread_window_tests.js b/addons/mail/static/tests/document_thread_window_tests.js index f01ab0925f2..c4a84040433 100644 --- a/addons/mail/static/tests/document_thread_window_tests.js +++ b/addons/mail/static/tests/document_thread_window_tests.js @@ -1,6 +1,8 @@ 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'); @@ -128,20 +130,23 @@ QUnit.test('open a document thread in a thread window', async function (assert) 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, - intercepts: { - do_action: function (ev) { - assert.deepEqual(ev.data.action, { - res_id: 1, - res_model: 'some.res.model', - type: 'ir.actions.act_window', - views: [[false, 'form']], - }, "should open the document in form view"); - }, + env: { + bus }, }); await messagingMenu.appendTo($('#qunit-fixture')); @@ -177,8 +182,18 @@ QUnit.test('post messages in a document thread window', async function (assert) 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: this.services, + services: Object.assign(this.services, { + local_storage: MockedLocalStorageService, + }), data: this.data, session: this.session, mockRPC: function (route, args) { @@ -198,13 +213,7 @@ QUnit.test('post messages in a document thread window', async function (assert) return this._super.apply(this, arguments); }, }); - testUtils.mock.intercept(messagingMenu, 'call_service', function (ev) { - if (ev.data.service === 'local_storage' && ev.data.method === 'setItem' && - ev.data.args[0] === 'mail.document_threads_last_message') { - assert.deepEqual(ev.data.args[1].messageData, newMessage, - "should write sent message in local storage, to share info with other tabs"); - } - }, true); + await messagingMenu.appendTo($('#qunit-fixture')); // toggle the messaging menu and open the documentThread @@ -229,24 +238,25 @@ QUnit.test('post messages in a document thread window', async function (assert) QUnit.test('open, fold, unfold and close a document thread window', async function (assert) { assert.expect(20); var messagingMenu = new MessagingMenu(); - await testUtils.mock.addMockEnvironment(messagingMenu, { - services: this.services, - data: this.data, - session: this.session, - }); - await testUtils.nextTick(); - testUtils.mock.intercept(messagingMenu, 'call_service', function (ev) { - if (ev.data.service === 'local_storage' && ev.data.method === 'setItem') { - const key = ev.data.args[0]; + const MockedLocalStorageService = LocalStorageService.extend({ + setItem(key, value) { if (key === 'mail.document_threads_state/some.res.model_1') { - const state = ev.data.args[1].state; + const state = value.state; assert.ok(state); assert.ok(state.name); assert.ok(state.windowState); assert.step(`${key}: { name: "${state.name}", windowState: '${state.windowState}' }`); } } - }, true); + }); + 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 diff --git a/addons/mail/static/tests/document_viewer_tests.js b/addons/mail/static/tests/document_viewer_tests.js index aa50483b48a..ca6b433d519 100644 --- a/addons/mail/static/tests/document_viewer_tests.js +++ b/addons/mail/static/tests/document_viewer_tests.js @@ -14,7 +14,7 @@ var Widget = require('web.Widget'); * @param {boolean} [params.debug] * @returns {DocumentViewer} */ -var createViewer = function (params) { +var createViewer = async function (params) { var parent = new Widget(); var viewer = new DocumentViewer(parent, params.attachments, params.attachmentID); @@ -32,7 +32,7 @@ var createViewer = function (params) { return Promise.resolve(); } }; - testUtils.mock.addMockEnvironment(parent, { + await testUtils.mock.addMockEnvironment(parent, { mockRPC: function () { if (params.mockRPC) { var _super = this._super; diff --git a/addons/mail/static/tests/mail_status_manager_tests.js b/addons/mail/static/tests/mail_status_manager_tests.js index f21cefdec9e..891cf3aaa68 100644 --- a/addons/mail/static/tests/mail_status_manager_tests.js +++ b/addons/mail/static/tests/mail_status_manager_tests.js @@ -17,9 +17,9 @@ QUnit.module('Status manager', { this.timeoutMock = mailTestUtils.patchMailTimeouts(); }, }); -QUnit.test('simple set im_status', function (assert) { +QUnit.test('simple set im_status', async function (assert) { assert.expect(1); - var parent = testUtils.createParent({ + var parent = await testUtils.createParent({ services: this.services, mockRPC: function (route, args) { if (route === '/mail/init_messaging') { @@ -41,7 +41,7 @@ QUnit.test('simple set im_status', function (assert) { QUnit.test('multi get_im_status', async function (assert) { assert.expect(8); var readCount = 0; - var parent = testUtils.createParent({ + var parent = await testUtils.createParent({ //data: this.data, services: this.services, mockRPC: function (route, args) { @@ -86,7 +86,7 @@ QUnit.test('multi get_im_status', async function (assert) { QUnit.test('update loop', async function (assert) { assert.expect(10); var readCount = 0; - var parent = testUtils.createParent({ + var parent = await testUtils.createParent({ services: this.services, mockRPC: function (route, args) { if (route === '/mail/init_messaging') { @@ -162,7 +162,7 @@ QUnit.test('update status', async function (assert) { } }); var statusWidget = new StatusWidget(); - testUtils.mock.addMockEnvironment(statusWidget, { + await testUtils.mock.addMockEnvironment(statusWidget, { services: this.services, mockRPC: function (route, args) { if (route === '/mail/init_messaging') { diff --git a/addons/mail/static/tests/models/cc_throttle_function_tests.js b/addons/mail/static/tests/models/cc_throttle_function_tests.js index 5ab00ef6048..f760675b1f3 100644 --- a/addons/mail/static/tests/models/cc_throttle_function_tests.js +++ b/addons/mail/static/tests/models/cc_throttle_function_tests.js @@ -31,7 +31,7 @@ QUnit.module('mail', { QUnit.module('model', {}, function () { QUnit.module('CC Throttle Function'); -QUnit.test('cancel()', function (assert) { +QUnit.test('cancel()', async function (assert) { var done = assert.async(); assert.expect(3); @@ -39,7 +39,7 @@ QUnit.test('cancel()', function (assert) { var def = testUtils.makeTestPromise(); var step = 1; - var widget = testUtils.createParent({ + var widget = await testUtils.createParent({ mockRPC: function (route, args) { if (args.method === '__rpc__') { assert.step(args.method + args.args[0]); @@ -87,7 +87,7 @@ QUnit.test('cancel()', function (assert) { }); }); -QUnit.test('clear()', function (assert) { +QUnit.test('clear()', async function (assert) { var done = assert.async(); assert.expect(5); @@ -96,7 +96,7 @@ QUnit.test('clear()', function (assert) { var def2 = testUtils.makeTestPromise(); var step = 1; - var widget = testUtils.createParent({ + var widget = await testUtils.createParent({ mockRPC: function (route, args) { if (args.method === '__rpc__') { assert.step(args.method + args.args[0]); diff --git a/addons/mail/static/tests/systray/systray_activity_menu_tests.js b/addons/mail/static/tests/systray/systray_activity_menu_tests.js index 1cedca2b9c1..23f3500001b 100644 --- a/addons/mail/static/tests/systray/systray_activity_menu_tests.js +++ b/addons/mail/static/tests/systray/systray_activity_menu_tests.js @@ -83,7 +83,7 @@ QUnit.test('activity menu widget: menu with no records', async function (assert) assert.expect(1); var activityMenu = new ActivityMenu(); - testUtils.mock.addMockEnvironment(activityMenu, { + await testUtils.mock.addMockEnvironment(activityMenu, { services: this.services, mockRPC: function (route, args) { if (args.method === 'systray_get_activities') { @@ -102,7 +102,7 @@ QUnit.test('activity menu widget: activity menu with 3 records', async function assert.expect(10); var self = this; var activityMenu = new ActivityMenu(); - testUtils.mock.addMockEnvironment(activityMenu, { + await testUtils.mock.addMockEnvironment(activityMenu, { services: this.services, mockRPC: function (route, args) { if (args.method === 'systray_get_activities') { @@ -163,7 +163,7 @@ QUnit.test('activity menu widget: activity view icon', async function (assert) { assert.expect(12); var self = this; var activityMenu = new ActivityMenu(); - testUtils.mock.addMockEnvironment(activityMenu, { + await testUtils.mock.addMockEnvironment(activityMenu, { services: this.services, session: this.session, mockRPC: function (route, args) { diff --git a/addons/mail/static/tests/thread_window/basic_thread_window_tests.js b/addons/mail/static/tests/thread_window/basic_thread_window_tests.js index 87e3c536998..61414d2aeaa 100644 --- a/addons/mail/static/tests/thread_window/basic_thread_window_tests.js +++ b/addons/mail/static/tests/thread_window/basic_thread_window_tests.js @@ -56,7 +56,7 @@ QUnit.module('Basic', { this.services = mailTestUtils.getMailServices(); this.ORIGINAL_THREAD_WINDOW_APPENDTO = this.services.mail_service.prototype.THREAD_WINDOW_APPENDTO; - this.createParent = function (params) { + this.createParent = async function (params) { var widget = new Widget(); // in non-debug mode, append thread windows in qunit-fixture @@ -68,7 +68,7 @@ QUnit.module('Basic', { self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture'; } - testUtils.mock.addMockEnvironment(widget, params); + await testUtils.mock.addMockEnvironment(widget, params); return widget; }; }, @@ -81,7 +81,7 @@ QUnit.module('Basic', { QUnit.test('basic rendering thread window', async function (assert) { assert.expect(10); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -128,7 +128,7 @@ QUnit.test('basic rendering thread window', async function (assert) { QUnit.test('close thread window using ESCAPE key', async function (assert) { assert.expect(5); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, mockRPC: function (route, args) { @@ -169,7 +169,7 @@ QUnit.test('close thread window using ESCAPE key', async function (assert) { QUnit.test('thread window\'s input can still be focused when the UI is blocked', async function (assert) { assert.expect(2); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -205,7 +205,7 @@ QUnit.test('thread window\'s input can still be focused when the UI is blocked', QUnit.test('emoji popover should open correctly in thread windows', async function (assert) { assert.expect(1); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -227,7 +227,7 @@ QUnit.test('emoji popover should open correctly in thread windows', async functi QUnit.test('do not increase unread counter when receiving message with myself as author', async function (assert) { assert.expect(4); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, session: { partner_id: 3 } @@ -274,7 +274,7 @@ QUnit.test('do not increment unread counter with focus on thread window', async // order to set the focus on it. assert.expect(2); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, session: { partner_id: 3 } @@ -322,7 +322,7 @@ QUnit.test('do not mark as read the newly open thread window from received messa message_unread_counter: 0, }]; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, session: { partner_id: 3 }, @@ -393,7 +393,7 @@ QUnit.test('show document link of message linked to a document', async function channel_type: "public", }); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, session: { partner_id: 3 }, @@ -510,7 +510,7 @@ QUnit.test('do not auto-focus chat window on receiving new message from new DM', state: 'open', }]; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, session: { partner_id: 3 }, @@ -600,7 +600,7 @@ QUnit.test('no out-of-office status in thread window', async function (assert) { }], }, }; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -650,7 +650,7 @@ QUnit.test('receive 2 new DM messages in quick succession (no chat window initia }], }; - const parent = this.createParent({ + const parent = await this.createParent({ data: this.data, mockRPC(route, args) { if (args.method === 'channel_minimize') { @@ -740,7 +740,7 @@ QUnit.test('non-deletable message attachments', async function (assert) { record_name: "general", res_id: 1, }]; - const parent = this.createParent({ + const parent = await this.createParent({ data: this.data, services: this.services, }); @@ -781,7 +781,7 @@ QUnit.test('join channel from click channel mention', async function (assert) { channel_ids: [1], }); - const parent = this.createParent({ + const parent = await this.createParent({ data: this.data, services: this.services, session: { partner_id: 3 }, diff --git a/addons/mail/static/tests/thread_window/blank_thread_window_tests.js b/addons/mail/static/tests/thread_window/blank_thread_window_tests.js index 4a24a80d4c3..2d295144b62 100644 --- a/addons/mail/static/tests/thread_window/blank_thread_window_tests.js +++ b/addons/mail/static/tests/thread_window/blank_thread_window_tests.js @@ -32,7 +32,7 @@ QUnit.module('Blank', { this.services = mailTestUtils.getMailServices(); this.ORIGINAL_THREAD_WINDOW_APPENDTO = this.services.mail_service.prototype.THREAD_WINDOW_APPENDTO; - this.createParent = function (params) { + this.createParent = async function (params) { var widget = new Widget(); // in non-debug mode, append thread windows in qunit-fixture @@ -44,7 +44,7 @@ QUnit.module('Blank', { self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture'; } - testUtils.mock.addMockEnvironment(widget, params); + await testUtils.mock.addMockEnvironment(widget, params); return widget; }; @@ -90,7 +90,7 @@ QUnit.module('Blank', { QUnit.test('basic rendering blank thread window', async function (assert) { assert.expect(5); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -117,7 +117,7 @@ QUnit.test('basic rendering blank thread window', async function (assert) { QUnit.test('close blank thread window', async function (assert) { assert.expect(1); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -139,7 +139,7 @@ QUnit.test('fold blank thread window', async function (assert) { // (e.g. 400px) assert.expect(3); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -191,7 +191,7 @@ QUnit.test('open new DM chat from blank thread window', async function (assert) records: [], }; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, mockRPC: function (route, args) { @@ -274,7 +274,7 @@ QUnit.test('open already detached DM chat from blank thread window', async funct name: 'DemoUser1', }]; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, mockRPC: function (route, args) { diff --git a/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js b/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js index 078230e276a..36da266128c 100644 --- a/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js +++ b/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js @@ -31,7 +31,7 @@ QUnit.module('Hidden', { this.services = mailTestUtils.getMailServices(); this.ORIGINAL_THREAD_WINDOW_APPENDTO = this.services.mail_service.prototype.THREAD_WINDOW_APPENDTO; - this.createParent = function (params) { + this.createParent = async function (params) { var widget = new Widget(); // in non-debug mode, append thread windows in qunit-fixture @@ -43,7 +43,7 @@ QUnit.module('Hidden', { self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture'; } - testUtils.mock.addMockEnvironment(widget, params); + await testUtils.mock.addMockEnvironment(widget, params); return widget; }; }, @@ -86,7 +86,7 @@ QUnit.test('hidden thread windows dropdown when not enough horizontal space (ver }, }; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -172,7 +172,7 @@ QUnit.test('hidden thread windows dropdown when not enough horizontal space (ver }, }; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); @@ -266,7 +266,7 @@ QUnit.test('receive message from hidden thread window', async function (assert) }, }; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); diff --git a/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js b/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js index 732a5fe7938..db2561fd048 100644 --- a/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js +++ b/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js @@ -62,7 +62,7 @@ QUnit.module('Moderation', { this.services = mailTestUtils.getMailServices(); this.ORIGINAL_THREAD_WINDOW_APPENDTO = this.services.mail_service.prototype.THREAD_WINDOW_APPENDTO; - this.createParent = function (params) { + this.createParent = async function (params) { var widget = new Widget(); // in non-debug mode, append thread windows in qunit-fixture @@ -74,7 +74,7 @@ QUnit.module('Moderation', { self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture'; } - testUtils.mock.addMockEnvironment(widget, params); + await testUtils.mock.addMockEnvironment(widget, params); return widget; }; }, @@ -110,7 +110,7 @@ QUnit.test('moderator: moderated channel with pending moderation message', async res_id: 1, }]; - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, }); diff --git a/addons/mail/static/tests/thread_window/typing_thread_window_tests.js b/addons/mail/static/tests/thread_window/typing_thread_window_tests.js index be2bd4beec8..53960dc283d 100644 --- a/addons/mail/static/tests/thread_window/typing_thread_window_tests.js +++ b/addons/mail/static/tests/thread_window/typing_thread_window_tests.js @@ -51,7 +51,7 @@ QUnit.module('Typing', { await testUtils.nextMicrotaskTick(); }; - this.createParent = function (params) { + this.createParent = async function (params) { var widget = new Widget(); // in non-debug mode, append thread windows in qunit-fixture @@ -63,7 +63,7 @@ QUnit.module('Typing', { self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture'; } - testUtils.mock.addMockEnvironment(widget, params); + await testUtils.mock.addMockEnvironment(widget, params); return widget; }; }, @@ -76,7 +76,7 @@ QUnit.module('Typing', { QUnit.test('receive typing notification', async function (assert) { assert.expect(4); - var parent = this.createParent({ + var parent = await this.createParent({ data: this.data, services: this.services, mockRPC: function (route, args) { diff --git a/addons/mail/static/tests/tools/debug_manager_tests.js b/addons/mail/static/tests/tools/debug_manager_tests.js index c21d36572b9..151b89024b6 100644 --- a/addons/mail/static/tests/tools/debug_manager_tests.js +++ b/addons/mail/static/tests/tools/debug_manager_tests.js @@ -10,7 +10,7 @@ QUnit.module('Mail DebugManager', {}, function () { QUnit.test("Manage Messages", async function (assert) { assert.expect(3); - var debugManager = createDebugManager({ + var debugManager = await createDebugManager({ intercepts: { do_action: function (event) { assert.deepEqual(event.data.action, { diff --git a/addons/note/static/tests/systray_activity_menu_tests.js b/addons/note/static/tests/systray_activity_menu_tests.js index 768412df2eb..85ca835e674 100644 --- a/addons/note/static/tests/systray_activity_menu_tests.js +++ b/addons/note/static/tests/systray_activity_menu_tests.js @@ -38,7 +38,7 @@ QUnit.test('note activity menu widget: create note from activity menu', async fu assert.expect(15); var self = this; var activityMenu = new ActivityMenu(); - testUtils.mock.addMockEnvironment(activityMenu, { + await testUtils.mock.addMockEnvironment(activityMenu, { services: this.services, mockRPC: function (route, args) { if (args.method === 'systray_get_activities') { diff --git a/addons/stock/static/tests/stock_traceability_report_backend_tests.js b/addons/stock/static/tests/stock_traceability_report_backend_tests.js index feba8f0f9e5..20a9d809d70 100644 --- a/addons/stock/static/tests/stock_traceability_report_backend_tests.js +++ b/addons/stock/static/tests/stock_traceability_report_backend_tests.js @@ -13,7 +13,7 @@ odoo.define('stock.stock_traceability_report_backend_tests', function (require) * @returns {Promise} */ async function createStockReportAction(params) { - const parent = testUtils.createParent(params); + const parent = await testUtils.createParent(params); const report = new StockReportGeneric(parent, params.action); const target = testUtils.prepareTarget(params.debug); diff --git a/addons/web/static/tests/chrome/keyboard_navigation_mixin_tests.js b/addons/web/static/tests/chrome/keyboard_navigation_mixin_tests.js index dcf1c23ce39..b0c638dd802 100644 --- a/addons/web/static/tests/chrome/keyboard_navigation_mixin_tests.js +++ b/addons/web/static/tests/chrome/keyboard_navigation_mixin_tests.js @@ -26,7 +26,7 @@ QUnit.module('KeyboardNavigationMixin', function () { return this._super(...arguments); }, }); - var parent = testUtils.createParent({}); + var parent = await testUtils.createParent({}); var w = new KeyboardWidget(parent); await w.appendTo($target); @@ -67,7 +67,7 @@ QUnit.module('KeyboardNavigationMixin', function () { return this._super(...arguments); }, }); - var parent = testUtils.createParent({}); + var parent = await testUtils.createParent({}); var w = new KeyboardWidget(parent); await w.appendTo($target); diff --git a/addons/web/static/tests/chrome/menu_tests.js b/addons/web/static/tests/chrome/menu_tests.js index c7ce40b16c2..a50e2189906 100644 --- a/addons/web/static/tests/chrome/menu_tests.js +++ b/addons/web/static/tests/chrome/menu_tests.js @@ -13,7 +13,7 @@ odoo.define('web.menu_tests', function (require) { QUnit.test('Systray on_attach_callback is called', async function (assert) { assert.expect(4); - const parent = testUtils.createParent({}); + const parent = await testUtils.createParent({}); // Add some widgets to the systray const Widget1 = Widget.extend({ @@ -22,7 +22,7 @@ odoo.define('web.menu_tests', function (require) { const Widget2 = Widget.extend({ on_attach_callback: () => assert.step('on_attach_callback widget2') }); - SystrayMenu.Items = [Widget1, Widget2] + SystrayMenu.Items = [Widget1, Widget2]; testUtils.mock.patch(SystrayMenu, { on_attach_callback: function () { diff --git a/addons/web/static/tests/chrome/systray_tests.js b/addons/web/static/tests/chrome/systray_tests.js index c5238ceff04..941e275f19b 100644 --- a/addons/web/static/tests/chrome/systray_tests.js +++ b/addons/web/static/tests/chrome/systray_tests.js @@ -7,8 +7,7 @@ odoo.define('web.systray_tests', function (require) { QUnit.test('Adding async components to the registry respects the sequence', async function (assert) { assert.expect(2); - var parent = testUtils.createParent({ - }); + var parent = await testUtils.createParent({}); var prom = testUtils.makeTestPromise(); var synchronousFirstWidget = Widget.extend({ diff --git a/addons/web/static/tests/chrome/user_menu_tests.js b/addons/web/static/tests/chrome/user_menu_tests.js index 73c74b0753c..752697a5228 100644 --- a/addons/web/static/tests/chrome/user_menu_tests.js +++ b/addons/web/static/tests/chrome/user_menu_tests.js @@ -13,7 +13,7 @@ QUnit.module('chrome', {}, function () { var parent = new Widget(); - testUtils.mock.addMockEnvironment(parent, {}); + await testUtils.mock.addMockEnvironment(parent, {}); var userMenu = new UserMenu(parent); await userMenu.appendTo($('body')); diff --git a/addons/web/static/tests/control_panel/custom_filter_item_tests.js b/addons/web/static/tests/control_panel/custom_filter_item_tests.js index 52a5aa738a6..7602f56aae0 100644 --- a/addons/web/static/tests/control_panel/custom_filter_item_tests.js +++ b/addons/web/static/tests/control_panel/custom_filter_item_tests.js @@ -6,21 +6,10 @@ odoo.define('web.filter_menu_generator_tests', function (require) { const { Model } = require('web.model'); const pyUtils = require('web.py_utils'); const testUtils = require('web.test_utils'); - const session = require('web.session'); const cpHelpers = testUtils.controlPanel; const { createComponent } = testUtils; - function patchSession(newSession) { - // We have to patch the "legacy" session because field_utils is using it. - // TODO: remove it when the field_utils are re-written. - const initialSession = session; - Object.assign(session, newSession); - return function () { - Object.assign(session, initialSession); - }; - } - QUnit.module('Components', { beforeEach: function () { this.fields = { @@ -203,11 +192,6 @@ odoo.define('web.filter_menu_generator_tests', function (require) { QUnit.test('custom filter datetime with equal operator', async function (assert) { assert.expect(4); - patchSession({ - getTZOffset: function () { - return -240; - }, - }); class MockedControlPanelModel extends Model { createNewFilters(preFilters) { const preFilter = preFilters[0]; @@ -224,6 +208,11 @@ odoo.define('web.filter_menu_generator_tests', function (require) { props: { fields: this.fields, }, + session: { + getTZOffset() { + return -240; + }, + }, env: { controlPanelModel }, }); @@ -243,11 +232,6 @@ odoo.define('web.filter_menu_generator_tests', function (require) { QUnit.test('custom filter datetime between operator', async function (assert) { assert.expect(4); - patchSession({ - getTZOffset: function () { - return -240; - }, - }); class MockedControlPanelModel extends Model { createNewFilters(preFilters) { const preFilter = preFilters[0]; @@ -265,6 +249,11 @@ odoo.define('web.filter_menu_generator_tests', function (require) { props: { fields: this.fields, }, + session: { + getTZOffset() { + return -240; + }, + }, env: { controlPanelModel }, }); diff --git a/addons/web/static/tests/core/dialog_tests.js b/addons/web/static/tests/core/dialog_tests.js index ea3a672322f..c51239a01bb 100644 --- a/addons/web/static/tests/core/dialog_tests.js +++ b/addons/web/static/tests/core/dialog_tests.js @@ -7,10 +7,10 @@ var Widget = require('web.Widget'); var ESCAPE_KEY = $.Event("keyup", { which: 27 }); -function createEmptyParent(debug) { +async function createEmptyParent(debug) { var widget = new Widget(); - testUtils.mock.addMockEnvironment(widget, { + await testUtils.mock.addMockEnvironment(widget, { debug: debug || false, }); return widget; @@ -24,7 +24,7 @@ QUnit.module('core', {}, function () { assert.expect(3); var testPromise = testUtils.makeTestPromiseWithAssert(assert, 'custom callback'); - var parent = createEmptyParent(); + var parent = await createEmptyParent(); new Dialog(parent, { buttons: [ { @@ -54,7 +54,7 @@ QUnit.module('core', {}, function () { assert.expect(3); var testPromise = testUtils.makeTestPromiseWithAssert(assert, 'custom callback'); - var parent = createEmptyParent(); + var parent = await createEmptyParent(); new Dialog(parent, { buttons: [ { @@ -84,7 +84,7 @@ QUnit.module('core', {}, function () { assert.expect(3); var testPromise = testUtils.makeTestPromiseWithAssert(assert, 'confirm callback'); - var parent = createEmptyParent(); + var parent = await createEmptyParent(); var options = { confirm_callback: testPromise.reject, cancel_callback: testPromise.resolve, @@ -107,7 +107,7 @@ QUnit.module('core', {}, function () { assert.expect(3); var testPromise = testUtils.makeTestPromiseWithAssert(assert, 'alert callback'); - var parent = createEmptyParent(); + var parent = await createEmptyParent(); var options = { confirm_callback: testPromise.resolve, }; diff --git a/addons/web/static/tests/core/widget_tests.js b/addons/web/static/tests/core/widget_tests.js index f8283f91c35..1c1c59f1d52 100644 --- a/addons/web/static/tests/core/widget_tests.js +++ b/addons/web/static/tests/core/widget_tests.js @@ -402,7 +402,7 @@ QUnit.module('core', {}, function () { var def; var parent = new Widget(); - testUtils.mock.addMockEnvironment(parent, { + await testUtils.mock.addMockEnvironment(parent, { session: { rpc: function () { def = testUtils.makeTestPromise(); diff --git a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js index 856019092fe..98ff6a47925 100644 --- a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js +++ b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js @@ -1060,7 +1060,7 @@ QUnit.module('fields', {}, function () { var fixture = $('#qunit-fixture'); var self = this; - var model = testUtils.createModel({ + var model = await testUtils.createModel({ Model: BasicModel, data: this.data, }); @@ -1083,7 +1083,7 @@ QUnit.module('fields', {}, function () { }); var parent = new StandaloneWidget(model); model.setParent(parent); - testUtils.mock.addMockEnvironment(parent, { + await testUtils.mock.addMockEnvironment(parent, { data: self.data, mockRPC: function (route, args) { assert.step(args.method); diff --git a/addons/web/static/tests/tools/debug_manager_tests.js b/addons/web/static/tests/tools/debug_manager_tests.js index 0f850835c66..77970a1922e 100644 --- a/addons/web/static/tests/tools/debug_manager_tests.js +++ b/addons/web/static/tests/tools/debug_manager_tests.js @@ -11,7 +11,7 @@ QUnit.module('DebugManager', {}, function () { QUnit.test("list: edit view menu item", async function (assert) { assert.expect(3); - var debugManager = createDebugManager(); + var debugManager = await createDebugManager(); await debugManager.appendTo($('#qunit-fixture')); @@ -43,7 +43,7 @@ QUnit.module('DebugManager', {}, function () { QUnit.test("form: Manage Attachments option", async function (assert) { assert.expect(3); - var debugManager = createDebugManager({ + var debugManager = await createDebugManager({ intercepts: { do_action: function (event) { assert.deepEqual(event.data.action, { @@ -126,7 +126,7 @@ QUnit.module('DebugManager', {}, function () { }); // Now the real tested component - var debugManager = createDebugManager({ + var debugManager = await createDebugManager({ data: data, mockRPC: function (route, args) { if (route == "/web/dataset/call_kw/ir.default/set") { diff --git a/addons/web/static/tests/views/basic_model_tests.js b/addons/web/static/tests/views/basic_model_tests.js index 326c8550bb5..3d28a32cf2e 100644 --- a/addons/web/static/tests/views/basic_model_tests.js +++ b/addons/web/static/tests/views/basic_model_tests.js @@ -136,7 +136,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo']; this.params.context = { active_field: 2 }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -171,7 +171,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = 99; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -190,7 +190,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo', 'qux']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -211,7 +211,7 @@ odoo.define('web.basic_model_tests', function (require) { this.data.partner.records[1].qux = 1; this.params.fieldNames = ['qux']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -238,7 +238,7 @@ odoo.define('web.basic_model_tests', function (require) { var rpcCount = 0; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -277,7 +277,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo', 'bar']; this.params.context = { hello: 'world' }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -317,7 +317,7 @@ odoo.define('web.basic_model_tests', function (require) { var rpcCount = 0; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -354,7 +354,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -381,7 +381,7 @@ odoo.define('web.basic_model_tests', function (require) { this.data.partner.records[1].product_ids = [37]; this.params.fieldNames = ['product_ids']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -461,7 +461,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['product_id']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -495,7 +495,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo', 'product_id']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -524,7 +524,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo', 'product_id']; this.params.res_id = 1; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -553,7 +553,7 @@ odoo.define('web.basic_model_tests', function (require) { }, }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -583,7 +583,7 @@ odoo.define('web.basic_model_tests', function (require) { }, }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -615,7 +615,7 @@ odoo.define('web.basic_model_tests', function (require) { }, }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -641,7 +641,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; this.params.context = { active_field: 2 }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -671,7 +671,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.groupedBy = []; this.params.res_id = undefined; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -698,7 +698,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; this.params.type = 'record'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -732,7 +732,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; this.params.type = 'record'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -784,7 +784,7 @@ odoo.define('web.basic_model_tests', function (require) { }; this.params.viewType = 'form'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -822,7 +822,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; this.params.type = 'record'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -848,7 +848,7 @@ odoo.define('web.basic_model_tests', function (require) { fields.product_id.default = 37; fields.other_product_id.default = 41; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -880,7 +880,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -902,7 +902,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['category']; this.params.res_id = 1; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -927,7 +927,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['foo']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -951,7 +951,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['product_id']; var self = this; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -981,7 +981,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; var filterEnabled = false; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1046,7 +1046,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.groupedBy = ['date:month']; this.params.res_id = undefined; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1072,7 +1072,7 @@ odoo.define('web.basic_model_tests', function (require) { }; this.data.partner.records[0].selection = 'a'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1108,7 +1108,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.context = { active_field: 2 }; var id; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1146,7 +1146,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['product_ids']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1183,7 +1183,7 @@ odoo.define('web.basic_model_tests', function (require) { QUnit.test('create commands on a one2many', async function (assert) { assert.expect(3); - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1260,7 +1260,7 @@ odoo.define('web.basic_model_tests', function (require) { type: 'record', }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1297,7 +1297,7 @@ odoo.define('web.basic_model_tests', function (require) { QUnit.test('dates are properly loaded and parsed (record)', async function (assert) { assert.expect(2); - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1328,7 +1328,7 @@ odoo.define('web.basic_model_tests', function (require) { QUnit.test('dates are properly loaded and parsed (list)', async function (assert) { assert.expect(2); - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1355,7 +1355,7 @@ odoo.define('web.basic_model_tests', function (require) { QUnit.test('dates are properly loaded and parsed (default_get)', async function (assert) { assert.expect(1); - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1379,7 +1379,7 @@ odoo.define('web.basic_model_tests', function (require) { this.data.partner.fields.category.default = [12, 14]; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1412,7 +1412,7 @@ odoo.define('web.basic_model_tests', function (require) { }; this.data.partner.fields.category.type = 'many2one'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1464,7 +1464,7 @@ odoo.define('web.basic_model_tests', function (require) { string: "O2M", type: 'one2many', relation: 'partner', default: [[6, 0, [1]]], }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1510,7 +1510,7 @@ odoo.define('web.basic_model_tests', function (require) { this.data.partner.fields.product_id.context = "{'hello': 'world', 'test': foo}"; this.data.partner.fields.product_id.domain = "[['hello', 'like', 'world'], ['test', 'like', foo]]"; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1538,7 +1538,7 @@ odoo.define('web.basic_model_tests', function (require) { model.destroy(); // Try again with xml override of field domain and context - model = createModel({ + model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1585,7 +1585,7 @@ odoo.define('web.basic_model_tests', function (require) { } }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1650,7 +1650,7 @@ odoo.define('web.basic_model_tests', function (require) { } }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1699,7 +1699,7 @@ odoo.define('web.basic_model_tests', function (require) { QUnit.test('default_get with one2many values', async function (assert) { assert.expect(1); - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1738,7 +1738,7 @@ odoo.define('web.basic_model_tests', function (require) { assert.expect(3); var rpcCount = 0; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1773,7 +1773,7 @@ odoo.define('web.basic_model_tests', function (require) { assert.expect(5); var rpcCount = 0; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1812,7 +1812,7 @@ odoo.define('web.basic_model_tests', function (require) { assert.expect(5); var rpcCount = 0; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1857,7 +1857,7 @@ odoo.define('web.basic_model_tests', function (require) { assert.expect(4); var rpcCount = 0; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1888,7 +1888,7 @@ odoo.define('web.basic_model_tests', function (require) { assert.expect(2); let rpcCount = 0; - const model = createModel({ + const model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1916,7 +1916,7 @@ odoo.define('web.basic_model_tests', function (require) { this.data.partner.fields.product_id.context = "{'id': id, 'active_id': active_id, 'active_ids': active_ids, 'active_model': active_model}"; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -1949,7 +1949,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = ['category']; this.params.res_id = 1; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -1991,7 +1991,7 @@ odoo.define('web.basic_model_tests', function (require) { viewType: 'form', }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2011,7 +2011,7 @@ odoo.define('web.basic_model_tests', function (require) { assert.expect(2); this.data.partner.fields.foo.default = 'default'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2042,7 +2042,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.fieldNames = Object.keys(this.data.partner.fields); this.params.res_id = 1; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2095,7 +2095,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.viewType = 'form'; this.params.res_id = 1; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2133,7 +2133,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.groupedBy = []; this.params.res_id = undefined; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -2164,7 +2164,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; this.params.type = 'record'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route, args) { @@ -2196,7 +2196,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; this.params.type = 'record'; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2215,7 +2215,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = undefined; this.params.orderedBy = [{ name: 'display_name', asc: true }]; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, mockRPC: function (route) { @@ -2269,7 +2269,7 @@ odoo.define('web.basic_model_tests', function (require) { this.params.res_id = 1; this.params.fieldNames = ['foobool', 'foobool2']; this.params.fields = this.data.partner.fields; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2291,7 +2291,7 @@ odoo.define('web.basic_model_tests', function (require) { this.data.partner.records[1].product_ids = [37, 38]; this.params.fieldNames = ['product_ids']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2341,7 +2341,7 @@ odoo.define('web.basic_model_tests', function (require) { this.data.partner.records[1].product_ids = [37, 38]; this.params.fieldNames = ['product_ids']; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2401,7 +2401,7 @@ odoo.define('web.basic_model_tests', function (require) { }, }; - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); @@ -2448,7 +2448,7 @@ odoo.define('web.basic_model_tests', function (require) { QUnit.test('identify correct active field', async function(assert) { assert.expect(4); - var model = createModel({ + var model = await createModel({ Model: BasicModel, data: this.data, }); diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js index 7b69e8ce167..ba8c1f35dfd 100644 --- a/addons/web/static/tests/views/calendar_tests.js +++ b/addons/web/static/tests/views/calendar_tests.js @@ -2541,7 +2541,7 @@ QUnit.module('Views', { }); QUnit.test('check if the view destroys all widgets and instances', async function (assert) { - assert.expect(1); + assert.expect(2); var instanceNumber = 0; testUtils.mock.patch(mixins.ParentedMixin, { @@ -2579,21 +2579,10 @@ QUnit.module('Views', { }; var calendar = await createCalendarView(params); - calendar.destroy(); - - var initialInstanceNumber = instanceNumber; - instanceNumber = 0; - - calendar = await createCalendarView(params); - - // call destroy function of controller to ensure that it correctly destroys everything - calendar.__destroy(); - - // + 1 (parent) - assert.strictEqual(instanceNumber, initialInstanceNumber + 1, - "every widget must be destroyed exept the parent"); + assert.ok(instanceNumber > 0); calendar.destroy(); + assert.strictEqual(instanceNumber, 0); testUtils.mock.unpatch(mixins.ParentedMixin); }); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 33bc3de7347..56fba6515bc 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -7706,7 +7706,7 @@ QUnit.module('Views', { }); QUnit.test('check if the view destroys all widgets and instances', async function (assert) { - assert.expect(1); + assert.expect(2); var instanceNumber = 0; await testUtils.mock.patch(mixins.ParentedMixin, { @@ -7766,21 +7766,10 @@ QUnit.module('Views', { }; var form = await createView(params); - form.destroy(); - - var initialInstanceNumber = instanceNumber; - instanceNumber = 0; - - form = await createView(params); - - // call destroy function of controller to ensure that it correctly destroys everything - form.__destroy(); - - // + 4 (parent) - assert.strictEqual(instanceNumber, initialInstanceNumber + 1, - "every widget must be destroyed exept the parent"); + assert.ok(instanceNumber > 0); form.destroy(); + assert.strictEqual(instanceNumber, 0); await testUtils.mock.unpatch(mixins.ParentedMixin); }); diff --git a/addons/web/static/tests/views/kanban_model_tests.js b/addons/web/static/tests/views/kanban_model_tests.js index 793a5749b46..2598f2bd676 100644 --- a/addons/web/static/tests/views/kanban_model_tests.js +++ b/addons/web/static/tests/views/kanban_model_tests.js @@ -67,7 +67,7 @@ QUnit.module('Views', { assert.expect(22); var calledRoutes = {}; - var model = createModel({ + var model = await createModel({ Model: KanbanModel, data: this.data, mockRPC: function (route) { @@ -132,7 +132,7 @@ QUnit.module('Views', { var done = assert.async(); assert.expect(4); - var model = createModel({ + var model = await createModel({ Model: KanbanModel, data: this.data, mockRPC: function (route, args) { @@ -173,7 +173,7 @@ QUnit.module('Views', { var done = assert.async(); assert.expect(2); - var model = createModel({ + var model = await createModel({ Model: KanbanModel, data: this.data, mockRPC: function (route, args) { @@ -210,7 +210,7 @@ QUnit.module('Views', { this.data.partner.records.push({id: 3, foo: 'aaa', product_id: 37}); var nbReseq = 0; - var model = createModel({ + var model = await createModel({ Model: KanbanModel, data: this.data, mockRPC: function (route, args) { @@ -270,7 +270,7 @@ QUnit.module('Views', { assert.expect(8); var self = this; - var model = createModel({ + var model = await createModel({ Model: KanbanModel, data: this.data, }); diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index 22c29168585..225826c8515 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -5420,7 +5420,7 @@ QUnit.module('Views', { }); QUnit.test('check if the view destroys all widgets and instances', async function (assert) { - assert.expect(1); + assert.expect(2); var instanceNumber = 0; testUtils.mock.patch(mixins.ParentedMixin, { @@ -5457,21 +5457,10 @@ QUnit.module('Views', { }; var kanban = await createView(params); - kanban.destroy(); - - var initialInstanceNumber = instanceNumber; - instanceNumber = 0; - - kanban = await createView(params); - - // call destroy function of controller to ensure that it correctly destroys everything - kanban.__destroy(); - - // + 1 (parent) - assert.strictEqual(instanceNumber, initialInstanceNumber + 1, - "every widget must be destroyed exept the parent"); + assert.ok(instanceNumber > 0); kanban.destroy(); + assert.strictEqual(instanceNumber, 0); testUtils.mock.unpatch(mixins.ParentedMixin); }); diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js index d69aef904c1..67c1a7962a0 100644 --- a/addons/web/static/tests/views/list_tests.js +++ b/addons/web/static/tests/views/list_tests.js @@ -7409,7 +7409,7 @@ QUnit.module('Views', { }); QUnit.test('check if the view destroys all widgets and instances', async function (assert) { - assert.expect(1); + assert.expect(2); var instanceNumber = 0; testUtils.mock.patch(mixins.ParentedMixin, { @@ -7446,21 +7446,10 @@ QUnit.module('Views', { }; var list = await createView(params); - list.destroy(); - - var initialInstanceNumber = instanceNumber; - instanceNumber = 0; - - list = await createView(params); - - // call destroy function of controller to ensure that it correctly destroys everything - list.__destroy(); - - // + 1 (parent) - assert.strictEqual(instanceNumber, initialInstanceNumber + 1, - "every widget must be destroyed exept the parent"); + assert.ok(instanceNumber > 0); list.destroy(); + assert.strictEqual(instanceNumber, 0); testUtils.mock.unpatch(mixins.ParentedMixin); }); diff --git a/addons/web/static/tests/widgets/company_switcher_tests.js b/addons/web/static/tests/widgets/company_switcher_tests.js index 6b3ead230ca..fe0fec5e6c2 100644 --- a/addons/web/static/tests/widgets/company_switcher_tests.js +++ b/addons/web/static/tests/widgets/company_switcher_tests.js @@ -9,7 +9,7 @@ async function createSwitchCompanyMenu(params) { params = params || {}; var target = params.debug ? document.body : $('#qunit-fixture'); var menu = new SwitchCompanyMenu(); - testUtils.mock.addMockEnvironment(menu, params); + await testUtils.mock.addMockEnvironment(menu, params); await menu.appendTo(target) return menu } diff --git a/addons/web/static/tests/widgets/domain_selector_tests.js b/addons/web/static/tests/widgets/domain_selector_tests.js index 8c246fd8399..a587117f95a 100644 --- a/addons/web/static/tests/widgets/domain_selector_tests.js +++ b/addons/web/static/tests/widgets/domain_selector_tests.js @@ -60,7 +60,7 @@ QUnit.module('DomainSelector', { readonly: false, debugMode: true, }); - testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); await domainSelector.appendTo($target); // As we gave an empty domain, there should be a visible button to add @@ -161,7 +161,7 @@ QUnit.module('DomainSelector', { var domainSelector = new DomainSelector(null, "partner", [["nice_datetime", "=", "2017-03-27 15:42:00"]], { readonly: false, }); - testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); await domainSelector.appendTo($target); // Check that there is a datepicker to choose the date @@ -189,7 +189,7 @@ QUnit.module('DomainSelector', { debugMode: true, readonly: false, }); - testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); await domainSelector.appendTo($target); await testUtils.fields.editAndTrigger(domainSelector.$('.o_domain_leaf_value_input'), @@ -210,7 +210,7 @@ QUnit.module('DomainSelector', { debugMode: true, readonly: false, }); - testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); await domainSelector.appendTo($target); assert.strictEqual(domainSelector.$el.text(), "This domain is not supported.", @@ -230,7 +230,7 @@ QUnit.module('DomainSelector', { debugMode: true, default: [["foo","=","kikou"]], }); - testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(domainSelector, {data: this.data}); await domainSelector.appendTo($target); // Clicking on the button should add a visible field selector in the diff --git a/addons/web/static/tests/widgets/model_field_selector_tests.js b/addons/web/static/tests/widgets/model_field_selector_tests.js index 75580e09df3..69bb1eb9314 100644 --- a/addons/web/static/tests/widgets/model_field_selector_tests.js +++ b/addons/web/static/tests/widgets/model_field_selector_tests.js @@ -59,7 +59,7 @@ QUnit.module('ModelFieldSelector', { readonly: false, debugMode: true, }); - testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); await fieldSelector.appendTo($target); var $value = fieldSelector.$("> .o_field_selector_value"); @@ -182,7 +182,7 @@ QUnit.module('ModelFieldSelector', { readonly: false, debugMode: true, }); - testUtils.addMockEnvironment(fieldSelector, {data: this.data}); + await testUtils.addMockEnvironment(fieldSelector, {data: this.data}); await fieldSelector.appendTo($target); // Focusing the field selector input should open a field selector popover @@ -215,7 +215,7 @@ QUnit.module('ModelFieldSelector', { return field.type === 'many2one'; }, }); - testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); await fieldSelector.appendTo($target); fieldSelector.$el.trigger('focusin'); @@ -237,7 +237,7 @@ QUnit.module('ModelFieldSelector', { var fieldSelector = new ModelFieldSelector(null, "partner", [], { readonly: false, }); - testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); await fieldSelector.appendTo($target); fieldSelector.$el.trigger('focusin'); @@ -269,7 +269,7 @@ QUnit.module('ModelFieldSelector', { readonly: false, showSearchInput: false, }); - testUtils.mock.addMockEnvironment(fieldSelector, { data: this.data }); + await testUtils.mock.addMockEnvironment(fieldSelector, { data: this.data }); await fieldSelector.appendTo($target); fieldSelector.$el.trigger('focusin'); @@ -291,7 +291,7 @@ QUnit.module('ModelFieldSelector', { readonly: false, showSearchInput: false, }); - testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); await fieldSelector.appendTo($target); var $fieldName = fieldSelector.$('.o_field_selector_chain_part'); @@ -311,7 +311,7 @@ QUnit.module('ModelFieldSelector', { readonly: false, showSearchInput: false, }); - testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); + await testUtils.mock.addMockEnvironment(fieldSelector, {data: this.data}); await fieldSelector.appendTo($target); var $fieldName = fieldSelector.$('.o_field_selector_chain_part'); diff --git a/addons/web_editor/static/tests/test_utils.js b/addons/web_editor/static/tests/test_utils.js index 8b28e292438..9cd3249f953 100644 --- a/addons/web_editor/static/tests/test_utils.js +++ b/addons/web_editor/static/tests/test_utils.js @@ -293,12 +293,12 @@ function wysiwygData(data) { * * @param {object} params */ -function createWysiwyg(params) { +async function createWysiwyg(params) { patch(); params.data = wysiwygData(params.data); var parent = new Widget(); - testUtils.mock.addMockEnvironment(parent, params); + await testUtils.mock.addMockEnvironment(parent, params); var wysiwygOptions = _.extend({}, params.wysiwygOptions, { recordInfo: { diff --git a/addons/web_tour/static/tests/tour_manager_tests.js b/addons/web_tour/static/tests/tour_manager_tests.js index 79ce4c0ceb5..14802f9086f 100644 --- a/addons/web_tour/static/tests/tour_manager_tests.js +++ b/addons/web_tour/static/tests/tour_manager_tests.js @@ -20,7 +20,7 @@ odoo.define('web_tour.tour_manager_tests', async function (require) { * @param {Object[]} params.tours { {string} name, {Object} option, {Object[]} steps } */ async function createTourManager({ consumed_tours, debug, template, tours }) { - const parent = testUtils.createParent({ debug }); + const parent = await testUtils.createParent({ debug }); const tourManager = new TourManager(parent, consumed_tours); tourManager.running_step_delay = 0; for (const { name, options, steps } of tours) {