Add tests for FilterBar CascadeFilterControl (#13950)

This commit is contained in:
Geido 2021-04-06 21:15:17 +03:00 committed by GitHub
parent 7fb138381f
commit c0888dc16d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 84 additions and 8 deletions

View File

@ -0,0 +1,76 @@
/**
* 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 { render, screen } from 'spec/helpers/testing-library';
import { mockStore } from 'spec/fixtures/mockStore';
import { Provider } from 'react-redux';
import { nativeFiltersInfo } from 'spec/javascripts/dashboard/fixtures/mockNativeFilters';
import CascadeFilterControl, { CascadeFilterControlProps } from '.';
const mockedProps = {
filter: {
...nativeFiltersInfo.filters.DefaultsID,
cascadeChildren: [
{
...nativeFiltersInfo.filters.DefaultsID,
name: 'test child filter 1',
cascadeChildren: [],
},
{
...nativeFiltersInfo.filters.DefaultsID,
name: 'test child filter 2',
cascadeChildren: [
{
...nativeFiltersInfo.filters.DefaultsID,
name: 'test child of a child filter',
cascadeChildren: [],
},
],
},
],
},
onFilterSelectionChange: jest.fn(),
};
const setup = (props: CascadeFilterControlProps) => (
<Provider store={mockStore}>
<CascadeFilterControl {...props} />
</Provider>
);
test('should render', () => {
const { container } = render(setup(mockedProps));
expect(container).toBeInTheDocument();
});
test('should render the filter name', () => {
render(setup(mockedProps));
expect(screen.getByText('test')).toBeInTheDocument();
});
test('should render the children filter names', () => {
render(setup(mockedProps));
expect(screen.getByText('test child filter 1')).toBeInTheDocument();
expect(screen.getByText('test child filter 2')).toBeInTheDocument();
});
test('should render the child of a child filter name', () => {
render(setup(mockedProps));
expect(screen.getByText('test child of a child filter')).toBeInTheDocument();
});

View File

@ -19,11 +19,11 @@
import React from 'react';
import { styled, DataMask } from '@superset-ui/core';
import Icon from 'src/components/Icon';
import FilterControl from '../FilterControls/FilterControl';
import { Filter } from '../../types';
import { CascadeFilter } from './types';
import FilterControl from 'src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControl';
import { CascadeFilter } from 'src/dashboard/components/nativeFilters/FilterBar/CascadeFilters/types';
import { Filter } from 'src/dashboard/components/nativeFilters/types';
interface CascadeFilterControlProps {
export interface CascadeFilterControlProps {
filter: CascadeFilter;
directPathToChild?: string[];
onFilterSelectionChange: (filter: Filter, dataMask: DataMask) => void;

View File

@ -24,10 +24,10 @@ import { Pill } from 'src/dashboard/components/FiltersBadge/Styles';
import { useSelector } from 'react-redux';
import { getInitialMask } from 'src/dataMask/reducer';
import { MaskWithId } from 'src/dataMask/types';
import FilterControl from '../FilterControls/FilterControl';
import CascadeFilterControl from './CascadeFilterControl';
import { CascadeFilter } from './types';
import { Filter } from '../../types';
import FilterControl from 'src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControl';
import CascadeFilterControl from 'src/dashboard/components/nativeFilters/FilterBar/CascadeFilters/CascadeFilterControl';
import { CascadeFilter } from 'src/dashboard/components/nativeFilters/FilterBar/CascadeFilters/types';
import { Filter } from 'src/dashboard/components/nativeFilters/types';
interface CascadePopoverProps {
filter: CascadeFilter;