1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-31 01:16:01 +02:00

feat: add tests for filters component (#5632)

This commit is contained in:
Jaanus Sellin 2023-12-13 16:05:09 +02:00 committed by GitHub
parent 6c52158723
commit 1191094981
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 87 additions and 22 deletions

View File

@ -39,21 +39,3 @@ test('should not render projects filters when less than two project', async () =
expect(screen.queryByText('Projects')).not.toBeInTheDocument();
});
test('should keep filters order when adding a new filter', async () => {
render(<FeatureToggleFilters onChange={() => {}} state={{}} />);
const valuesElement = await screen.findByText('Tags');
expect(valuesElement).toBeInTheDocument();
valuesElement.click();
const stateElement = await screen.findByText('State');
expect(stateElement).toBeInTheDocument();
stateElement.click();
const filterItems = screen.getAllByTestId(FILTER_ITEM);
const filterTexts = filterItems.map((item) => item.textContent);
expect(filterTexts).toEqual(['Tags', 'State']);
});

View File

@ -6,7 +6,7 @@ import {
FilterItemParamHolder,
Filters,
IFilterItem,
} from 'component/filter/Filters';
} from 'component/filter/Filters/Filters';
interface IFeatureToggleFiltersProps {
state: FilterItemParamHolder;

View File

@ -0,0 +1,83 @@
import { screen } from '@testing-library/react';
import { render } from 'utils/testRenderer';
import { FILTER_ITEM } from 'utils/testIds';
import { Filters, IFilterItem } from './Filters';
test('shoulder render all available filters', async () => {
const availableFilters: IFilterItem[] = [
{
label: 'Filter1',
options: [],
filterKey: 'irrelevantKey',
singularOperators: ['IRRELEVANT'],
pluralOperators: ['IRRELEVANT'],
},
{
label: 'Filter2',
options: [],
filterKey: 'irrelevantKey',
singularOperators: ['IRRELEVANT'],
pluralOperators: ['IRRELEVANT'],
},
{
label: 'Filter3',
options: [],
filterKey: 'irrelevantKey',
singularOperators: ['IRRELEVANT'],
pluralOperators: ['IRRELEVANT'],
},
];
render(
<Filters
availableFilters={availableFilters}
onChange={() => {}}
state={{}}
/>,
);
await screen.findByText('Filter1');
await screen.findByText('Filter2');
await screen.findByText('Filter3');
});
test('should keep filters order when adding a new filter', async () => {
const availableFilters: IFilterItem[] = [
{
label: 'State',
options: [],
filterKey: 'irrelevantKey',
singularOperators: ['IRRELEVANT'],
pluralOperators: ['IRRELEVANT'],
},
{
label: 'Tags',
options: [],
filterKey: 'irrelevantKey',
singularOperators: ['IRRELEVANT'],
pluralOperators: ['IRRELEVANT'],
},
];
render(
<Filters
availableFilters={availableFilters}
onChange={() => {}}
state={{}}
/>,
);
const valuesElement = await screen.findByText('Tags');
expect(valuesElement).toBeInTheDocument();
valuesElement.click();
const stateElement = await screen.findByText('State');
expect(stateElement).toBeInTheDocument();
stateElement.click();
const filterItems = screen.getAllByTestId(FILTER_ITEM);
const filterTexts = filterItems.map((item) => item.textContent);
expect(filterTexts).toEqual(['Tags', 'State']);
});

View File

@ -1,9 +1,9 @@
import { useEffect, useState, VFC } from 'react';
import { Box, styled } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import AddFilterButton from './AddFilterButton';
import AddFilterButton from '../AddFilterButton';
import { FilterDateItem } from 'component/common/FilterDateItem/FilterDateItem';
import { FilterItem, FilterItemParams } from './FilterItem/FilterItem';
import { FilterItem, FilterItemParams } from '../FilterItem/FilterItem';
const StyledBox = styled(Box)(({ theme }) => ({
display: 'flex',

View File

@ -4,7 +4,7 @@ import {
FilterItemParamHolder,
Filters,
IFilterItem,
} from 'component/filter/Filters';
} from 'component/filter/Filters/Filters';
interface IProjectOverviewFilters {
state: FilterItemParamHolder;