From 6d75ccdb594d538aab9220cf7b85b961c9a50488 Mon Sep 17 00:00:00 2001 From: David Monjoie Date: Fri, 2 Jun 2017 10:56:23 +0200 Subject: [PATCH] [FIX] web: mock server should not catch errors Otherwise some changes can create rpc errors that are silently caught and never seen as long as, out of (un)luck, the end result is the same. Tests which need to create a server error can just simulate it using the mockRPC mechanism. --- addons/web/static/tests/helpers/mock_server.js | 14 +------------- addons/web/static/tests/views/form_tests.js | 7 +++++++ addons/web/static/tests/views/kanban_tests.js | 6 +++++- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index e98a9abe5ea..9f4262378d5 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -95,19 +95,7 @@ var MockServer = Class.extend({ if (logLevel === 2) { console.log('%c[rpc] request ' + route, 'color: blue; font-weight: bold;', args); } - var def; - try { - def = this._performRpc(route, args); - } catch (e) { - var error = {code: 200, data: {}, message: e.message}; - if (logLevel === 1) { - console.warn('Mock: ' + route, error.message); - } else if (logLevel === 2) { - console.warn('%c[rpc] error response:', 'color: blue; font-weight: bold;', error.message); - } - return $.Deferred().reject(error, $.Event()); - } - return def.then(function (result) { + return this._performRpc(route, args).then(function (result) { var resultString = JSON.stringify(result || false); if (logLevel === 1) { console.log('Mock: ' + route, JSON.parse(resultString)); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index c3cdbdc62d0..5f7f34a2cc7 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -4839,6 +4839,13 @@ QUnit.module('Views', { if (args.method === 'search_count') { assert.strictEqual(args.model, 'test', "should search_count on test"); + if (!args.kwargs.domain) { + return $.Deferred().reject({ + code: 200, + data: {}, + message: "MockServer._getRecords: given domain has to be an array.", + }, $.Event()); + } } return this._super.apply(this, arguments); }, diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index b2b84ff00d5..f7ea586da6c 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -391,7 +391,11 @@ QUnit.module('Views', { groupBy: ['product_id'], mockRPC: function (route, args) { if (args.method === 'name_create') { - throw new Error("Odoo server error"); + return $.Deferred().reject({ + code: 200, + data: {}, + message: "Odoo server error", + }, $.Event()); } return this._super.apply(this, arguments); },