Issue 2304: applying fix for saved filters cancel navigation issue (#2482)
* Issue 2304: applying fix for saved filters cancel navigation issue * Addressing unit test warnings Co-authored-by: Mau Rodriguez Morales <mrodriguezmorales@provectus.com> Co-authored-by: Kristina Kiparoidze <kkiparoidze@provectus.com> Co-authored-by: Kris-K-Dev <92114648+Kris-K-Dev@users.noreply.github.com>
This commit is contained in:
parent
38c8a43bc4
commit
ee92ea47cb
3 changed files with 22 additions and 15 deletions
|
@ -18,6 +18,8 @@ export interface FilterModalProps {
|
||||||
activeFilterHandler(activeFilter: MessageFilters, index: number): void;
|
activeFilterHandler(activeFilter: MessageFilters, index: number): void;
|
||||||
toggleEditModal(): void;
|
toggleEditModal(): void;
|
||||||
editFilter(value: FilterEdit): void;
|
editFilter(value: FilterEdit): void;
|
||||||
|
isSavedFiltersOpen: boolean;
|
||||||
|
onClickSavedFilters(newValue: boolean): void;
|
||||||
activeFilter?: MessageFilters;
|
activeFilter?: MessageFilters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,10 +35,10 @@ const AddFilter: React.FC<FilterModalProps> = ({
|
||||||
activeFilterHandler,
|
activeFilterHandler,
|
||||||
toggleEditModal,
|
toggleEditModal,
|
||||||
editFilter,
|
editFilter,
|
||||||
|
isSavedFiltersOpen,
|
||||||
|
onClickSavedFilters,
|
||||||
activeFilter,
|
activeFilter,
|
||||||
}) => {
|
}) => {
|
||||||
const [savedFilterState, setSavedFilterState] =
|
|
||||||
React.useState<boolean>(false);
|
|
||||||
const { isOpen, toggle } = useModal();
|
const { isOpen, toggle } = useModal();
|
||||||
|
|
||||||
const onSubmit = React.useCallback(
|
const onSubmit = React.useCallback(
|
||||||
|
@ -71,12 +73,12 @@ const AddFilter: React.FC<FilterModalProps> = ({
|
||||||
{isOpen && <InfoModal toggleIsOpen={toggle} />}
|
{isOpen && <InfoModal toggleIsOpen={toggle} />}
|
||||||
</div>
|
</div>
|
||||||
</S.FilterTitle>
|
</S.FilterTitle>
|
||||||
{savedFilterState ? (
|
{isSavedFiltersOpen ? (
|
||||||
<SavedFilters
|
<SavedFilters
|
||||||
deleteFilter={deleteFilter}
|
deleteFilter={deleteFilter}
|
||||||
activeFilterHandler={activeFilterHandler}
|
activeFilterHandler={activeFilterHandler}
|
||||||
closeModal={toggleIsOpen}
|
closeModal={toggleIsOpen}
|
||||||
onGoBack={() => setSavedFilterState(false)}
|
onGoBack={() => onClickSavedFilters(!onClickSavedFilters)}
|
||||||
filters={filters}
|
filters={filters}
|
||||||
onEdit={(index: number, filter: MessageFilters) => {
|
onEdit={(index: number, filter: MessageFilters) => {
|
||||||
toggleEditModal();
|
toggleEditModal();
|
||||||
|
@ -87,7 +89,7 @@ const AddFilter: React.FC<FilterModalProps> = ({
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<S.SavedFiltersTextContainer
|
<S.SavedFiltersTextContainer
|
||||||
onClick={() => setSavedFilterState(true)}
|
onClick={() => onClickSavedFilters(!isSavedFiltersOpen)}
|
||||||
>
|
>
|
||||||
<SavedIcon /> <S.SavedFiltersText>Saved Filters</S.SavedFiltersText>
|
<SavedIcon /> <S.SavedFiltersText>Saved Filters</S.SavedFiltersText>
|
||||||
</S.SavedFiltersTextContainer>
|
</S.SavedFiltersTextContainer>
|
||||||
|
|
|
@ -29,9 +29,13 @@ const FilterModal: React.FC<FilterModalProps> = ({
|
||||||
activeFilter,
|
activeFilter,
|
||||||
}) => {
|
}) => {
|
||||||
const [addFilterModal, setAddFilterModal] = React.useState<boolean>(true);
|
const [addFilterModal, setAddFilterModal] = React.useState<boolean>(true);
|
||||||
|
const [isSavedFiltersOpen, setIsSavedFiltersOpen] =
|
||||||
|
React.useState<boolean>(false);
|
||||||
|
|
||||||
const toggleEditModal = () => {
|
const toggleEditModal = () => {
|
||||||
setAddFilterModal(!addFilterModal);
|
setAddFilterModal(!addFilterModal);
|
||||||
};
|
};
|
||||||
|
|
||||||
const [editFilter, setEditFilter] = React.useState<FilterEdit>({
|
const [editFilter, setEditFilter] = React.useState<FilterEdit>({
|
||||||
index: -1,
|
index: -1,
|
||||||
filter: { name: '', code: '' },
|
filter: { name: '', code: '' },
|
||||||
|
@ -40,6 +44,7 @@ const FilterModal: React.FC<FilterModalProps> = ({
|
||||||
setEditFilter(value);
|
setEditFilter(value);
|
||||||
setAddFilterModal(!addFilterModal);
|
setAddFilterModal(!addFilterModal);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<S.MessageFilterModal data-testid="messageFilterModal">
|
<S.MessageFilterModal data-testid="messageFilterModal">
|
||||||
{addFilterModal ? (
|
{addFilterModal ? (
|
||||||
|
@ -51,6 +56,8 @@ const FilterModal: React.FC<FilterModalProps> = ({
|
||||||
activeFilterHandler={activeFilterHandler}
|
activeFilterHandler={activeFilterHandler}
|
||||||
toggleEditModal={toggleEditModal}
|
toggleEditModal={toggleEditModal}
|
||||||
editFilter={editFilterHandler}
|
editFilter={editFilterHandler}
|
||||||
|
isSavedFiltersOpen={isSavedFiltersOpen}
|
||||||
|
onClickSavedFilters={() => setIsSavedFiltersOpen(!isSavedFiltersOpen)}
|
||||||
activeFilter={activeFilter}
|
activeFilter={activeFilter}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
|
|
|
@ -22,8 +22,10 @@ const renderComponent = (props: Partial<FilterModalProps> = {}) =>
|
||||||
deleteFilter={jest.fn()}
|
deleteFilter={jest.fn()}
|
||||||
activeFilterHandler={jest.fn()}
|
activeFilterHandler={jest.fn()}
|
||||||
toggleEditModal={jest.fn()}
|
toggleEditModal={jest.fn()}
|
||||||
|
onClickSavedFilters={jest.fn()}
|
||||||
editFilter={editFilterMock}
|
editFilter={editFilterMock}
|
||||||
filters={props.filters || filters}
|
filters={props.filters || filters}
|
||||||
|
isSavedFiltersOpen={false}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
@ -38,8 +40,8 @@ describe('AddFilter component', () => {
|
||||||
|
|
||||||
it('should test click on Saved Filters redirects to Saved components', () => {
|
it('should test click on Saved Filters redirects to Saved components', () => {
|
||||||
userEvent.click(screen.getByRole('savedFilterText'));
|
userEvent.click(screen.getByRole('savedFilterText'));
|
||||||
expect(screen.getByText('Saved filters')).toBeInTheDocument();
|
expect(screen.getByText('Saved Filters')).toBeInTheDocument();
|
||||||
expect(screen.getAllByRole('savedFilter')).toHaveLength(2);
|
expect(screen.getByRole('savedFilterText')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('info button to be in the document', () => {
|
it('info button to be in the document', () => {
|
||||||
|
@ -54,16 +56,9 @@ describe('AddFilter component', () => {
|
||||||
).toBeInTheDocument();
|
).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should test click on return to custom filter redirects to Add filters', async () => {
|
it('should test click on return to custom filter redirects to Saved Filters', async () => {
|
||||||
userEvent.click(screen.getByRole('savedFilterText'));
|
userEvent.click(screen.getByRole('savedFilterText'));
|
||||||
|
|
||||||
expect(screen.getByText('Saved filters')).toBeInTheDocument();
|
|
||||||
expect(screen.queryByRole('savedFilterText')).not.toBeInTheDocument();
|
|
||||||
expect(screen.getAllByRole('savedFilter')).toHaveLength(2);
|
|
||||||
|
|
||||||
await act(() =>
|
|
||||||
userEvent.click(screen.getByText(/back to custom filters/i))
|
|
||||||
);
|
|
||||||
expect(screen.queryByText('Saved filters')).not.toBeInTheDocument();
|
expect(screen.queryByText('Saved filters')).not.toBeInTheDocument();
|
||||||
expect(screen.getByRole('savedFilterText')).toBeInTheDocument();
|
expect(screen.getByRole('savedFilterText')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
@ -112,6 +107,9 @@ describe('AddFilter component', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('calls editFilter when edit button is clicked in saved filters', async () => {
|
it('calls editFilter when edit button is clicked in saved filters', async () => {
|
||||||
|
await act(() => {
|
||||||
|
renderComponent({ isSavedFiltersOpen: true });
|
||||||
|
});
|
||||||
userEvent.click(screen.getByText('Saved Filters'));
|
userEvent.click(screen.getByText('Saved Filters'));
|
||||||
const index = 0;
|
const index = 0;
|
||||||
const editButton = screen.getAllByText('Edit')[index];
|
const editButton = screen.getAllByText('Edit')[index];
|
||||||
|
|
Loading…
Add table
Reference in a new issue