Skip to content

Commit c5819b6

Browse files
authored
UILD-468: Close comparison modal and clear selected checkboxes (#71)
1 parent ee00dc6 commit c5819b6

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

src/components/SearchResultEntry/SearchResultEntry.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FC, useState } from 'react';
1+
import { FC, useEffect, useState } from 'react';
22
import { Link } from 'react-router-dom';
33
import classNames from 'classnames';
44
import { FormattedMessage, useIntl } from 'react-intl';
@@ -58,7 +58,7 @@ const instancesListHeader: Row = {
5858
export const SearchResultEntry: FC<SearchResultEntry> = ({ instances, ...restOfWork }) => {
5959
const { formatMessage } = useIntl();
6060
const { navigateToEditPage } = useNavigateToEditPage();
61-
const { navigationState, selectedInstances, setSelectedInstances } = useSearchState();
61+
const { navigationState, selectedInstances, setSelectedInstances, resetSelectedInstances } = useSearchState();
6262
const [isOpen, setIsOpen] = useState(true);
6363
const { setIsLoading } = useLoadingState();
6464
const { addStatusMessagesItem } = useStatusState();
@@ -67,6 +67,13 @@ export const SearchResultEntry: FC<SearchResultEntry> = ({ instances, ...restOfW
6767
const toggleIsOpen = () => setIsOpen(!isOpen);
6868
const { fetchRecord } = useRecordControls();
6969

70+
useEffect(() => {
71+
return () => {
72+
resetFullDisplayComponentType();
73+
resetSelectedInstances();
74+
};
75+
}, []);
76+
7077
const handleOpenPreview = async (id: string) => {
7178
try {
7279
setIsLoading(true);

src/test/__tests__/components/SearchResultEntry.test.tsx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { fireEvent, render, screen } from '@testing-library/react';
22
import { BrowserRouter } from 'react-router-dom';
3+
import { setInitialGlobalState } from '@src/test/__mocks__/store';
4+
import { useSearchStore, useUIStore } from '@src/store';
35
import { SearchResultEntry } from '@components/SearchResultEntry';
46
import { itemSearchMockData } from './ItemSearch.test';
57

@@ -64,4 +66,37 @@ describe('SearchResultEntry', () => {
6466
expect(getByText('ld.noInstancesAvailable')).toBeInTheDocument();
6567
});
6668
});
69+
70+
describe('component unmount', () => {
71+
test('clears fullDisplayComponentType and selectedInstances on unmount', () => {
72+
const mockResetFullDisplayComponentType = jest.fn();
73+
const mockResetSelectedInstances = jest.fn();
74+
75+
setInitialGlobalState([
76+
{
77+
store: useUIStore,
78+
state: {
79+
resetFullDisplayComponentType: mockResetFullDisplayComponentType,
80+
},
81+
},
82+
{
83+
store: useSearchStore,
84+
state: {
85+
resetSelectedInstances: mockResetSelectedInstances,
86+
},
87+
},
88+
]);
89+
90+
const { unmount } = render(
91+
<BrowserRouter>
92+
<SearchResultEntry {...(mockProps as unknown as WorkAsSearchResultDTO)} />
93+
</BrowserRouter>,
94+
);
95+
96+
unmount();
97+
98+
expect(mockResetFullDisplayComponentType).toHaveBeenCalled();
99+
expect(mockResetSelectedInstances).toHaveBeenCalled();
100+
});
101+
});
67102
});

0 commit comments

Comments
 (0)