summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/fields/relational_fields
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/tests/fields/relational_fields')
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_one2many_tests.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js b/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
index 19883a53c73..eb4cd9986cc 100644
--- a/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
+++ b/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
@@ -2,10 +2,12 @@ odoo.define('web.field_one_to_many_tests', function (require) {
"use strict";
var AbstractField = require('web.AbstractField');
+var AbstractStorageService = require('web.AbstractStorageService');
var FormView = require('web.FormView');
var KanbanRecord = require('web.KanbanRecord');
var ListRenderer = require('web.ListRenderer');
var NotificationService = require('web.NotificationService');
+var RamStorage = require('web.RamStorage');
var relationalFields = require('web.relational_fields');
var testUtils = require('web.test_utils');
var fieldUtils = require('web.field_utils');
@@ -8638,6 +8640,51 @@ QUnit.module('fields', {}, function () {
form.destroy();
});
+
+ QUnit.test('column widths are correct after toggling optional fields', async function (assert) {
+ assert.expect(2);
+
+ var RamStorageService = AbstractStorageService.extend({
+ storage: new RamStorage(),
+ });
+
+ this.data.partner.records[0].p = [2];
+
+ var form = await createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form>' +
+ '<field name="p">' +
+ '<tree editable="top">' +
+ '<field name="date" required="1"/>' + // we want the list to remain empty
+ '<field name="foo"/>' +
+ '<field name="int_field" optional="1"/>' +
+ '</tree>' +
+ '</field>' +
+ '</form>',
+ services: {
+ local_storage: RamStorageService,
+ },
+ });
+
+ // date fields have an hardcoded width, which apply when there is no
+ // record, and should be kept afterwards
+ let width = form.$('th[data-name="date"]')[0].offsetWidth;
+
+ // create a record to store the current widths, but discard it directly to keep
+ // the list empty (otherwise, the browser automatically computes the optimal widths)
+ await testUtils.dom.click(form.$('.o_field_x2many_list_row_add a'));
+
+ assert.strictEqual(form.$('th[data-name="date"]')[0].offsetWidth, width);
+
+ await testUtils.dom.click(form.$('.o_optional_columns_dropdown_toggle'));
+ await testUtils.dom.click(form.$('div.o_optional_columns div.dropdown-item input'));
+
+ assert.strictEqual(form.$('th[data-name="date"]')[0].offsetWidth, width);
+
+ form.destroy();
+ });
});
});
});