forked from Techsystech/web
[FIX] web_export_view: Remove newlines from fields having many2many_tags
parent
c420cfb554
commit
682e5aaf7e
|
@ -88,7 +88,14 @@ odoo.define('web_export_view', function (require) {
|
|||
? _t("True") : _t("False")
|
||||
);
|
||||
} else {
|
||||
var text = $cell.text().trim();
|
||||
var is_m2m = $cell.hasClass('o_many2many_tags_cell');
|
||||
if (is_m2m) {
|
||||
var tags = $cell.find('span.o_badge_text');
|
||||
var tags_text_list = tags.map((i, el) => el.innerText.trim()).get();
|
||||
var text = tags_text_list.join('\n');
|
||||
} else {
|
||||
var text = $cell.text().trim();
|
||||
}
|
||||
var is_number =
|
||||
$cell.hasClass('o_list_number') &&
|
||||
!$cell.hasClass('o_float_time_cell');
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
odoo.define('web_export_view.data_export_tests', function (require) {
|
||||
"use strict";
|
||||
|
||||
var ListView = require('web.ListView');
|
||||
var testUtils = require('web.test_utils');
|
||||
|
||||
var createView = testUtils.createView;
|
||||
|
||||
QUnit.module('web_export_view', {
|
||||
beforeEach: function () {
|
||||
this.data = {
|
||||
user: {
|
||||
fields: {
|
||||
name: {
|
||||
string: "Name",
|
||||
type: "char",
|
||||
},
|
||||
company_ids: {
|
||||
string: "Companies",
|
||||
type: "one2many",
|
||||
relation: "company",
|
||||
},
|
||||
},
|
||||
records: [
|
||||
{
|
||||
id: 1,
|
||||
name: "User in all companies",
|
||||
company_ids: [1, 2],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "User in company 1",
|
||||
company_ids: [1],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "User in company 2",
|
||||
company_ids: [2],
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "User in no company",
|
||||
company_ids: [],
|
||||
},
|
||||
]
|
||||
},
|
||||
company: {
|
||||
fields: {
|
||||
name: {
|
||||
string: "Name",
|
||||
type: "char",
|
||||
},
|
||||
},
|
||||
records: [
|
||||
{
|
||||
id: 1,
|
||||
name: "Company 1",
|
||||
display_name: "Display company 1",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "Company 2",
|
||||
display_name: "Display company 2",
|
||||
},
|
||||
]
|
||||
},
|
||||
};
|
||||
}
|
||||
}, function () {
|
||||
|
||||
QUnit.test('Exporting many2many_tags widget', function (assert) {
|
||||
var data_companies = this.data.company.records;
|
||||
assert.expect(1 + data_companies.length);
|
||||
|
||||
var list = createView({
|
||||
View: ListView,
|
||||
model: 'user',
|
||||
data: this.data,
|
||||
arch:
|
||||
'<tree>' +
|
||||
'<field name="name"/>' +
|
||||
'<field name="company_ids" widget="many2many_tags"/>' +
|
||||
'</tree>',
|
||||
viewOptions: {
|
||||
hasSidebar: true,
|
||||
},
|
||||
session: {
|
||||
get_file: function (params) {
|
||||
// Find line for user in all companies
|
||||
var rows = JSON.parse(params.data.data).rows;
|
||||
var file_companies_text = rows.find(r => r[0] === "User in all companies")[1];
|
||||
var file_companies = file_companies_text.split('\n');
|
||||
|
||||
// Check that there is exactly one line per company
|
||||
assert.equal(
|
||||
file_companies.length,
|
||||
data_companies.length,
|
||||
"Companies field in file has as many lines as defined companies"
|
||||
);
|
||||
for (let data_company of data_companies) {
|
||||
assert.ok(
|
||||
file_companies.includes(data_company.display_name),
|
||||
"Company " + data_company.id + " is exported"
|
||||
);
|
||||
}
|
||||
|
||||
params.complete();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// Select all lines and export
|
||||
list.$('thead th.o_list_record_selector input').click();
|
||||
list.sidebar.$("button.export_treeview_xls").click();
|
||||
|
||||
// Cleanup
|
||||
list.destroy();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -6,4 +6,9 @@
|
|||
<script type="text/javascript" src="/web_export_view/static/src/js/web_export_view.js"></script>
|
||||
</xpath>
|
||||
</template>
|
||||
<template id="qunit_suite" name="web_export_view tests" inherit_id="web.qunit_suite">
|
||||
<xpath expr="//t[@t-set='head']" position="inside">
|
||||
<script type="text/javascript" src="/web_export_view/static/tests/web_export_view_tests.js"/>
|
||||
</xpath>
|
||||
</template>
|
||||
</odoo>
|
||||
|
|
Loading…
Reference in New Issue