[FIX] web: fix traceback when saving fields list during data export
The traceback was caused by an occurence of this.dataset, which was left out in the new views refactoring (this.dataset has been replaced by this.record).
This commit is contained in:
@@ -179,7 +179,7 @@ var DataExport = Dialog.extend({
|
||||
var self = this;
|
||||
this.exports.create({
|
||||
name: value,
|
||||
resource: this.dataset.model,
|
||||
resource: this.record.model,
|
||||
export_fields: _.map(fields, function (field) {
|
||||
return [0, 0, {name: field}];
|
||||
}),
|
||||
|
||||
@@ -4,6 +4,7 @@ odoo.define('web.data_export_tests', function (require) {
|
||||
var framework = require('web.framework');
|
||||
var ListView = require('web.ListView');
|
||||
var testUtils = require('web.test_utils');
|
||||
var data = require('web.data');
|
||||
|
||||
var createView = testUtils.createView;
|
||||
|
||||
@@ -127,6 +128,89 @@ QUnit.module('widgets', {
|
||||
]);
|
||||
});
|
||||
|
||||
QUnit.test('saving fields list when exporting data', function (assert) {
|
||||
assert.expect(6);
|
||||
|
||||
var create = data.DataSet.prototype.create;
|
||||
|
||||
data.DataSet.prototype.create = function (data, options) {
|
||||
assert.step('create');
|
||||
return $.when([]);
|
||||
};
|
||||
|
||||
var list = createView({
|
||||
View: ListView,
|
||||
model: 'partner',
|
||||
data: this.data,
|
||||
arch: '<tree><field name="foo"/></tree>',
|
||||
viewOptions: {
|
||||
sidebar: true,
|
||||
},
|
||||
mockRPC: function (route) {
|
||||
if (route === '/web/export/formats') {
|
||||
return $.when([
|
||||
{tag: 'csv', label: 'CSV'},
|
||||
{tag: 'xls', label: 'Excel'},
|
||||
]);
|
||||
}
|
||||
if (route === '/web/export/get_fields') {
|
||||
return $.when([
|
||||
{
|
||||
field_type: "one2many",
|
||||
string: "Activities",
|
||||
required: false,
|
||||
value: "activity_ids/id",
|
||||
id: "activity_ids",
|
||||
params: {"model": "mail.activity", "prefix": "activity_ids", "name": "Activities"},
|
||||
relation_field: "res_id",
|
||||
children: true,
|
||||
},
|
||||
]);
|
||||
}
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
});
|
||||
|
||||
list.getParent().searchview = {
|
||||
build_search_data: function () {
|
||||
assert.step('build_search_data');
|
||||
return {
|
||||
contexts: [],
|
||||
domains: [],
|
||||
groupbys: [],
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
// Open the export modal
|
||||
list.$('thead th.o_list_record_selector input').click();
|
||||
list.sidebar.$('a:contains(Export)').click();
|
||||
assert.strictEqual($('.modal').length, 1,
|
||||
"a modal dialog should be open");
|
||||
|
||||
// Select 'Activities' in fields to export
|
||||
assert.strictEqual($('.modal select.o_fields_list option').length, 0,
|
||||
"the fields list should be empty");
|
||||
$('.modal .o_export_tree_item:contains(Activities)').click();
|
||||
$('.modal button:contains(Add)').click();
|
||||
assert.strictEqual($('.modal select.o_fields_list option').length, 1,
|
||||
"there should be one item in the fields list");
|
||||
|
||||
// Save fields list
|
||||
$('.modal a:contains(Save fields list)').click();
|
||||
$('.modal .o_save_list > input').val('fields list').trigger('input');
|
||||
$('.modal .o_save_list > button').click();
|
||||
assert.verifySteps(['build_search_data', 'create'],
|
||||
"create should have been called");
|
||||
|
||||
// Close the modal and destroy list
|
||||
$('.modal button span:contains(Close)').click();
|
||||
list.destroy();
|
||||
|
||||
// restore create function
|
||||
data.DataSet.prototype.create = create;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user