summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2018-09-07 08:26:12 +0200
committerAaron Bohy <aab@odoo.com>2018-09-07 08:37:45 +0200
commita51a5b70d3c78b65d32a9fa576dffa3d8a2af666 (patch)
tree703d4ba63243bc9fdc9fa6271e2e3f6910e62b82 /addons/web/static
parent737ca0eb424de101ad051ffe9ce721d1d9e577e4 (diff)
[FIX] web: FieldDomain: reset field with a new domain
Before this rev., there was a crash when a FieldDomain was reset with a new domain (e.g. coming from an onchange). For instance, it crashed in Email Marketing > create new Mass Mailing > select mailing lists. Introduced by 68332a01. opw-1882850
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/widgets/domain_selector.js2
-rw-r--r--addons/web/static/tests/fields/basic_fields_tests.js37
2 files changed, 38 insertions, 1 deletions
diff --git a/addons/web/static/src/js/widgets/domain_selector.js b/addons/web/static/src/js/widgets/domain_selector.js
index 2b100d923fa..ec295da6109 100644
--- a/addons/web/static/src/js/widgets/domain_selector.js
+++ b/addons/web/static/src/js/widgets/domain_selector.js
@@ -491,7 +491,7 @@ var DomainSelector = DomainTree.extend({
}
var parsedDomain = this._parseDomain(domain);
if (parsedDomain) {
- return this._redraw(domain);
+ return this._redraw(parsedDomain);
}
},
diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js
index 4dd595cbfa0..fade0282f69 100644
--- a/addons/web/static/tests/fields/basic_fields_tests.js
+++ b/addons/web/static/tests/fields/basic_fields_tests.js
@@ -4521,6 +4521,43 @@ QUnit.module('basic_fields', {
form.destroy();
});
+ QUnit.test('domain field can be reset with a new domain (from onchange)', function (assert) {
+ assert.expect(2);
+
+ this.data.partner.records[0].foo = '[]';
+ this.data.partner.onchanges = {
+ display_name: function (obj) {
+ obj.foo = '[["id", "=", 1]]';
+ },
+ };
+
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch:
+ '<form>' +
+ '<field name="display_name"/>' +
+ '<field name="foo" widget="domain" options="{\'model\': \'partner\'}"/>' +
+ '</form>',
+ res_id: 1,
+ viewOptions: {
+ mode: 'edit',
+ },
+ });
+
+ assert.equal(form.$('.o_domain_show_selection_button').text().trim(), '5 record(s)',
+ "the domain being empty, there should be 5 records");
+
+ // update display_name to trigger the onchange and reset foo
+ form.$('.o_field_widget[name=display_name]').val('new value').trigger('input');
+
+ assert.equal(form.$('.o_domain_show_selection_button').text().trim(), '1 record(s)',
+ "the domain has changed, there should be only 1 record");
+
+ form.destroy();
+ });
+
QUnit.test('domain field: handle false domain as []', function (assert) {
assert.expect(3);