summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/helpers
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2017-11-17 15:34:13 +0100
committerAaron Bohy <aab@odoo.com>2017-11-23 11:00:53 +0100
commitbaae272ffdbb3b723ce9d2f09dfe720b8bbde27b (patch)
treec6d1e481a8be6e787b868b1d394344b65649b599 /addons/web/static/tests/helpers
parentb4609e3c254658b853f774abc5d244036770e2ac (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.js42
-rw-r--r--addons/web/static/tests/helpers/test_utils.js38
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) {