diff options
| author | Aaron Bohy <aab@odoo.com> | 2018-09-07 08:26:12 +0200 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2018-09-07 08:37:45 +0200 |
| commit | a51a5b70d3c78b65d32a9fa576dffa3d8a2af666 (patch) | |
| tree | 703d4ba63243bc9fdc9fa6271e2e3f6910e62b82 /addons/web | |
| parent | 737ca0eb424de101ad051ffe9ce721d1d9e577e4 (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')
| -rw-r--r-- | addons/web/static/src/js/widgets/domain_selector.js | 2 | ||||
| -rw-r--r-- | addons/web/static/tests/fields/basic_fields_tests.js | 37 |
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); |
