diff --git a/addons/web/static/src/views/fields/domain/domain_field.js b/addons/web/static/src/views/fields/domain/domain_field.js index adeb36b0f58..9d73903ad25 100644 --- a/addons/web/static/src/views/fields/domain/domain_field.js +++ b/addons/web/static/src/views/fields/domain/domain_field.js @@ -143,7 +143,7 @@ export class DomainField extends Component { throw new Error(`Invalid model: ${resModel}`); } - let promises; + let promises = []; const domain = this.getDomain(props); try { const tree = treeFromDomain(domain, { distributeNot: !this.env.debug }); diff --git a/addons/web/static/src/views/fields/domain/domain_field.xml b/addons/web/static/src/views/fields/domain/domain_field.xml index 7e208917a8d..047ac16de33 100644 --- a/addons/web/static/src/views/fields/domain/domain_field.xml +++ b/addons/web/static/src/views/fields/domain/domain_field.xml @@ -5,7 +5,7 @@
- +
@@ -40,7 +40,7 @@
- + { '[("id", "=", 1)]' ); }); + + QUnit.test( + "foldable domain field unfolds and hides caret when domain is invalid", + async function (assert) { + serverData.models.partner.records[0].foo = "["; + + await makeView({ + type: "form", + resModel: "partner", + resId: 1, + serverData, + arch: ` +
+ + + + + +
`, + }); + assert.strictEqual( + target.querySelector(".o_field_domain span").textContent, + " Invalid domain " + ); + assert.containsNone(target, ".fa-caret-down"); + assert.strictEqual( + target.querySelector(".o_domain_selector_row").textContent, + " This domain is not supported. Reset domain" + ); + await click(target, ".o_domain_selector_row button"); + assert.strictEqual( + target.querySelector(".o_field_domain span").textContent, + "Match all records" + ); + } + ); });