kafka-ui/kafka-ui-react-app/src/components/common/Search/__tests__/Search.spec.tsx
David b43ba68405
Testing library update to 14.4.3 (#2741)
* Update RTL to v14.4.3

* fixed test cases QueryForm.spec.tsx, SchemaVersion.spec.tsx

Co-authored-by: Oleg Shur <workshur@gmail.com>
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
2022-10-26 23:15:25 +04:00

44 lines
1.4 KiB
TypeScript

import Search from 'components/common/Search/Search';
import React from 'react';
import { render } from 'lib/testHelpers';
import userEvent from '@testing-library/user-event';
import { screen } from '@testing-library/react';
import { useSearchParams } from 'react-router-dom';
jest.mock('use-debounce', () => ({
useDebouncedCallback: (fn: (e: Event) => void) => fn,
}));
const setSearchParamsMock = jest.fn();
jest.mock('react-router-dom', () => ({
...(jest.requireActual('react-router-dom') as object),
useSearchParams: jest.fn(),
}));
const placeholder = 'I am a search placeholder';
describe('Search', () => {
beforeEach(() => {
(useSearchParams as jest.Mock).mockImplementation(() => [
new URLSearchParams(),
setSearchParamsMock,
]);
});
it('calls handleSearch on input', async () => {
render(<Search placeholder={placeholder} />);
const input = screen.getByPlaceholderText(placeholder);
await userEvent.click(input);
await userEvent.keyboard('value');
expect(setSearchParamsMock).toHaveBeenCalledTimes(5);
});
it('when placeholder is provided', () => {
render(<Search placeholder={placeholder} />);
expect(screen.getByPlaceholderText(placeholder)).toBeInTheDocument();
});
it('when placeholder is not provided', () => {
render(<Search />);
expect(screen.queryByPlaceholderText('Search')).toBeInTheDocument();
});
});