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:
Mau Rodríguez Morales 2022-09-13 10:58:19 -06:00 committed by GitHub
parent 38c8a43bc4
commit ee92ea47cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 15 deletions

View file

@ -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>

View file

@ -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}
/> />
) : ( ) : (

View file

@ -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];