mirror of
https://github.com/Unleash/unleash.git
synced 2025-10-13 11:17:26 +02:00
**Upgrade to React v18 for Unleash v6. Here's why I think it's a good time to do it:** - Command Bar project: We've begun work on the command bar project, and there's a fantastic library we want to use. However, it requires React v18 support. - Straightforward Upgrade: I took a look at the upgrade guide https://react.dev/blog/2022/03/08/react-18-upgrade-guide and it seems fairly straightforward. In fact, I was able to get React v18 running with minimal changes in just 10 minutes! - Dropping IE Support: React v18 no longer supports Internet Explorer (IE), which is no longer supported by Microsoft as of June 15, 2022. Upgrading to v18 in v6 would be a good way to align with this change. TS updates: * FC children has to be explicit: https://stackoverflow.com/questions/71788254/react-18-typescript-children-fc * forcing version 18 types in resolutions: https://sentry.io/answers/type-is-not-assignable-to-type-reactnode/ Test updates: * fixing SWR issue that we have always had but it manifests more in new React (https://github.com/vercel/swr/issues/2373) --------- Co-authored-by: kwasniew <kwasniewski.mateusz@gmail.com>
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { createLocalStorage } from 'utils/createLocalStorage';
|
|
import { render } from 'utils/testRenderer';
|
|
import { fireEvent, screen } from '@testing-library/react';
|
|
import { Search } from './Search';
|
|
import { SEARCH_INPUT } from 'utils/testIds';
|
|
|
|
const testDisplayComponent = (
|
|
<Search
|
|
hasFilters
|
|
onChange={() => {}}
|
|
id='localStorageId'
|
|
getSearchContext={() => ({
|
|
data: [],
|
|
columns: [],
|
|
searchValue: '',
|
|
})}
|
|
/>
|
|
);
|
|
|
|
test('should read saved query from local storage', async () => {
|
|
const { setValue } = createLocalStorage('Search:localStorageId:v1', {});
|
|
setValue({
|
|
query: 'oldquery',
|
|
});
|
|
|
|
render(testDisplayComponent);
|
|
|
|
const input = screen.getByTestId(SEARCH_INPUT);
|
|
|
|
input.focus();
|
|
|
|
await screen.findByText('oldquery'); // local storage saved search query
|
|
|
|
screen.getByText('oldquery').click(); // click history hint
|
|
|
|
expect(await screen.findByDisplayValue('oldquery')).toBeInTheDocument(); // check if input updates
|
|
|
|
fireEvent.change(input, { target: { value: 'newquery' } });
|
|
|
|
expect(screen.getByText('newquery')).toBeInTheDocument(); // new saved query updated
|
|
});
|
|
|
|
test('should update saved query without local storage', async () => {
|
|
render(testDisplayComponent);
|
|
|
|
const input = screen.getByTestId(SEARCH_INPUT);
|
|
|
|
input.focus();
|
|
|
|
fireEvent.change(input, { target: { value: 'newquery' } });
|
|
|
|
expect(screen.getByText('newquery')).toBeInTheDocument(); // new saved query updated
|
|
});
|
|
|
|
test('should still render history if no search context', async () => {
|
|
const { setValue } = createLocalStorage('Search:localStorageId:v1', {});
|
|
setValue({
|
|
query: 'oldquery',
|
|
});
|
|
|
|
render(<Search onChange={() => {}} id='localStorageId' />);
|
|
|
|
const input = screen.getByTestId(SEARCH_INPUT);
|
|
|
|
input.focus();
|
|
|
|
await screen.findByText('oldquery');
|
|
});
|