diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-11-17 15:34:13 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-11-23 11:00:53 +0100 |
| commit | baae272ffdbb3b723ce9d2f09dfe720b8bbde27b (patch) | |
| tree | c6d1e481a8be6e787b868b1d394344b65649b599 /addons/web/static/tests/helpers | |
| parent | b4609e3c254658b853f774abc5d244036770e2ac (diff) | |
[REF] web: tests: make load_views RPCs go through mockRPC
This allows to inspect those RPCs and the given arguments as well.
Diffstat (limited to 'addons/web/static/tests/helpers')
| -rw-r--r-- | addons/web/static/tests/helpers/mock_server.js | 42 | ||||
| -rw-r--r-- | addons/web/static/tests/helpers/test_utils.js | 38 |
2 files changed, 56 insertions, 24 deletions
diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 9ce15568d46..4bc58dd097d 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -12,11 +12,14 @@ var MockServer = Class.extend({ * @constructor * @param {Object} data * @param {Object} options + * @param {Object} [options.archs={}] dict of archs with keys being strings like + * 'model,id,viewType' * @param {boolean} [options.debug=false] logs RPCs if set to true * @param {string} [options.currentDate] formatted string, default to * current day */ init: function (data, options) { + options = options || {}; this.data = data; for (var modelName in this.data) { var model = this.data[modelName]; @@ -40,9 +43,11 @@ var MockServer = Class.extend({ } } - this.debug = options && options.debug; + this.debug = options.debug; this.currentDate = options.currentDate || moment().format("YYYY-MM-DD"); + + this.archs = options.archs || {}; }, //-------------------------------------------------------------------------- @@ -427,6 +432,38 @@ var MockServer = Class.extend({ return modelFields; }, /** + * Simulate a 'load_views' operation + * + * @param {string} model + * @param {Array} args + * @param {Object} kwargs + * @param {Array} kwargs.views + * @param {Object} kwargs.options + * @param {Object} kwargs.context + * @returns {Object} + */ + _mockLoadViews: function (model, kwargs) { + var self = this; + var views = {}; + _.each(kwargs.views, function (view_descr) { + var viewID = view_descr[0] || false; + var viewType = view_descr[1]; + var key = [model, viewID, viewType].join(','); + var arch = self.archs[key]; + if (!arch) { + throw new Error('No arch found for key ' + key); + } + views[viewType] = { + arch: arch, + model: model, + viewOptions: { + context: kwargs.context, + }, + }; + }); + return views; + }, + /** * Simulate a 'name_get' operation * * @private @@ -927,6 +964,9 @@ var MockServer = Class.extend({ case 'fields_get': return $.when(this._mockFieldsGet(args.model, args.args)); + case 'load_views': + return $.when(this._mockLoadViews(args.model, args.kwargs)); + case 'name_get': return $.when(this._mockNameGet(args.model, args.args)); diff --git a/addons/web/static/tests/helpers/test_utils.js b/addons/web/static/tests/helpers/test_utils.js index d8a03783288..33b29622ea7 100644 --- a/addons/web/static/tests/helpers/test_utils.js +++ b/addons/web/static/tests/helpers/test_utils.js @@ -245,6 +245,7 @@ function addMockEnvironment(widget, params) { console.log('%c[debug] debug mode activated', 'color: blue; font-weight: bold;', url); } var mockServer = new Server(params.data, { + archs: params.archs, currentDate: params.currentDate, debug: params.debug, }); @@ -313,30 +314,21 @@ function addMockEnvironment(widget, params) { }); intercept(widget, "load_views", function (event) { - if (params.debug) { - console.log('[mock] load_views', event.data); - } - var views = {}; - var model = event.data.modelName; - _.each(event.data.views, function (view_descr) { - var view_id = view_descr[0] || false; - var view_type = view_descr[1]; - var key = [model, view_id, view_type].join(','); - var arch = params.archs[key]; - var viewParams = { - arch: arch, - model: model, - viewOptions: { - context: event.data.context.eval(), - }, - }; - if (!arch) { - throw new Error('No arch found for key ' + key); - } - views[view_type] = mockServer.fieldsViewGet(viewParams); + mockServer.performRpc('/web/dataset/call_kw/' + event.data.modelName, { + args: [], + kwargs: { + context: event.data.context.eval(), + options: event.data.options, + views: event.data.views, + }, + method: 'load_views', + model: event.data.modelName, + }).then(function (views) { + views = _.mapObject(views, function (viewParams) { + return mockServer.fieldsViewGet(viewParams); + }); + event.data.on_success(views); }); - - event.data.on_success(views); }); intercept(widget, "get_session", function (event) { |
