From 6b28c08c8049db88597db297a2e88ae60afc41f4 Mon Sep 17 00:00:00 2001 From: GabeLoins Date: Thu, 7 Jun 2018 11:39:18 -0700 Subject: [PATCH] empty lists are invalid comparators --- .../javascripts/explore/AdhocFilter_spec.js | 20 +++++++++++++++++++ superset/assets/src/explore/AdhocFilter.js | 8 +++++++- 2 files changed, 27 insertions(+), 1 deletion(-) 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); }