diff --git a/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js b/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js index 0cf9e58e1f310..36d3bdd09552d 100644 --- a/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js +++ b/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js @@ -112,6 +112,26 @@ describe('AdhocFilter', () => { }); // eslint-disable-next-line no-unused-expressions expect(adhocFilter3.isValid()).to.be.false; + + const adhocFilter4 = new AdhocFilter({ + expressionType: EXPRESSION_TYPES.SIMPLE, + subject: 'value', + operator: 'in', + comparator: [], + clause: CLAUSES.WHERE, + }); + // eslint-disable-next-line no-unused-expressions + expect(adhocFilter4.isValid()).to.be.false; + + const adhocFilter5 = new AdhocFilter({ + expressionType: EXPRESSION_TYPES.SIMPLE, + subject: 'value', + operator: 'in', + comparator: ['val1'], + clause: CLAUSES.WHERE, + }); + // eslint-disable-next-line no-unused-expressions + expect(adhocFilter5.isValid()).to.be.true; }); it('can translate from simple expressions to sql expressions', () => { diff --git a/superset/assets/src/explore/AdhocFilter.js b/superset/assets/src/explore/AdhocFilter.js index 675cc27f613eb..7f1bdd019579f 100644 --- a/superset/assets/src/explore/AdhocFilter.js +++ b/superset/assets/src/explore/AdhocFilter.js @@ -83,7 +83,13 @@ export default class AdhocFilter { isValid() { if (this.expressionType === EXPRESSION_TYPES.SIMPLE) { - return !!(this.operator && this.subject && this.comparator && this.clause); + return !!( + this.operator && + this.subject && + this.comparator && + this.comparator.length > 0 && + this.clause + ); } else if (this.expressionType === EXPRESSION_TYPES.SQL) { return !!(this.sqlExpression && this.clause); }