mirror of https://github.com/apache/superset.git
fix(filter-box): don't add empty filter to filtersChoices (#10687)
* fix(filter-box): don't add empty filter to filtersChoices * add test
This commit is contained in:
parent
8581bda2f1
commit
aaf04cc344
|
@ -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);
|
||||
});
|
||||
});
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue