You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2020/08/27 09:36:30 UTC
[incubator-superset] branch master updated: fix(filter-box): don't
add empty filter to filtersChoices (#10687)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new aaf04cc fix(filter-box): don't add empty filter to filtersChoices (#10687)
aaf04cc is described below
commit aaf04cc3449953b106af050294b37014fe83602b
Author: Ville Brofeldt <33...@users.noreply.github.com>
AuthorDate: Thu Aug 27 12:36:02 2020 +0300
fix(filter-box): don't add empty filter to filtersChoices (#10687)
* fix(filter-box): don't add empty filter to filtersChoices
* add test
---
.../explore/components/FilterBox_spec.jsx | 61 ++++++++++++++++++++++
.../src/visualizations/FilterBox/FilterBox.jsx | 2 +-
2 files changed, 62 insertions(+), 1 deletion(-)
diff --git a/superset-frontend/spec/javascripts/explore/components/FilterBox_spec.jsx b/superset-frontend/spec/javascripts/explore/components/FilterBox_spec.jsx
new file mode 100644
index 0000000..bc3362e
--- /dev/null
+++ b/superset-frontend/spec/javascripts/explore/components/FilterBox_spec.jsx
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import React from 'react';
+import { shallow } from 'enzyme';
+
+import FilterBox from 'src/visualizations/FilterBox/FilterBox';
+
+describe('FilterBox', () => {
+ it('should only add defined non-predefined options to filtersChoices', () => {
+ const wrapper = shallow(
+ <FilterBox
+ chartId={1001}
+ datasource={{ id: 1 }}
+ filtersChoices={{
+ name: [
+ { id: 'John', text: 'John', metric: 1234 },
+ { id: 'Jane', text: 'Jane', metric: 345678 },
+ ],
+ }}
+ filtersFields={[
+ {
+ asc: false,
+ clearable: true,
+ column: 'name',
+ key: 'name',
+ label: 'name',
+ metric: 'sum__COUNT',
+ multiple: true,
+ },
+ ]}
+ origSelectedValues={{}}
+ />,
+ );
+ const inst = wrapper.instance();
+ // choose a predefined value
+ inst.setState({ selectedValues: { name: ['John'] } });
+ expect(inst.props.filtersChoices.name.length).toEqual(2);
+ // reset selection
+ inst.setState({ selectedValues: { name: null } });
+ expect(inst.props.filtersChoices.name.length).toEqual(2);
+ // Add a new name
+ inst.setState({ selectedValues: { name: 'James' } });
+ expect(inst.props.filtersChoices.name.length).toEqual(3);
+ });
+});
diff --git a/superset-frontend/src/visualizations/FilterBox/FilterBox.jsx b/superset-frontend/src/visualizations/FilterBox/FilterBox.jsx
index c223a81..66b4fbe 100644
--- a/superset-frontend/src/visualizations/FilterBox/FilterBox.jsx
+++ b/superset-frontend/src/visualizations/FilterBox/FilterBox.jsx
@@ -341,7 +341,7 @@ class FilterBox extends React.Component {
? selectedValues[key]
: [selectedValues[key]];
selectedValuesForKey
- .filter(value => !choiceIds.has(value))
+ .filter(value => value !== null && !choiceIds.has(value))
.forEach(value => {
choices.unshift({
filter: key,