|
@@ -4,7 +4,7 @@ import AddFilter, {
|
|
|
} from 'components/Topics/Topic/Details/Messages/Filters/AddFilter';
|
|
|
import { render } from 'lib/testHelpers';
|
|
|
import { MessageFilters } from 'components/Topics/Topic/Details/Messages/Filters/Filters';
|
|
|
-import { screen, waitFor } from '@testing-library/react';
|
|
|
+import { act, screen } from '@testing-library/react';
|
|
|
import userEvent from '@testing-library/user-event';
|
|
|
|
|
|
const filters: MessageFilters[] = [
|
|
@@ -14,7 +14,7 @@ const filters: MessageFilters[] = [
|
|
|
|
|
|
const editFilterMock = jest.fn();
|
|
|
|
|
|
-const setupComponent = (props: Partial<FilterModalProps> = {}) =>
|
|
|
+const renderComponent = (props: Partial<FilterModalProps> = {}) =>
|
|
|
render(
|
|
|
<AddFilter
|
|
|
toggleIsOpen={jest.fn()}
|
|
@@ -30,20 +30,21 @@ const setupComponent = (props: Partial<FilterModalProps> = {}) =>
|
|
|
|
|
|
describe('AddFilter component', () => {
|
|
|
it('should test click on Saved Filters redirects to Saved components', () => {
|
|
|
- setupComponent();
|
|
|
+ renderComponent();
|
|
|
userEvent.click(screen.getByRole('savedFilterText'));
|
|
|
expect(screen.getByText('Saved filters')).toBeInTheDocument();
|
|
|
expect(screen.getAllByRole('savedFilter')).toHaveLength(2);
|
|
|
});
|
|
|
|
|
|
it('should test click on return to custom filter redirects to Add filters', async () => {
|
|
|
- setupComponent();
|
|
|
+ renderComponent();
|
|
|
userEvent.click(screen.getByRole('savedFilterText'));
|
|
|
+
|
|
|
expect(screen.getByText('Saved filters')).toBeInTheDocument();
|
|
|
expect(screen.queryByRole('savedFilterText')).not.toBeInTheDocument();
|
|
|
expect(screen.getAllByRole('savedFilter')).toHaveLength(2);
|
|
|
|
|
|
- await waitFor(() =>
|
|
|
+ await act(() =>
|
|
|
userEvent.click(screen.getByText(/back to custom filters/i))
|
|
|
);
|
|
|
expect(screen.queryByText('Saved filters')).not.toBeInTheDocument();
|
|
@@ -52,7 +53,9 @@ describe('AddFilter component', () => {
|
|
|
|
|
|
describe('Add new filter', () => {
|
|
|
beforeEach(async () => {
|
|
|
- await waitFor(() => setupComponent());
|
|
|
+ await act(() => {
|
|
|
+ renderComponent();
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
it('adding new filter', async () => {
|
|
@@ -66,8 +69,12 @@ describe('AddFilter component', () => {
|
|
|
const addFilterBtn = screen.getByRole('button', { name: /Add filter/i });
|
|
|
expect(addFilterBtn).toBeDisabled();
|
|
|
expect(screen.getByPlaceholderText('Enter Name')).toBeInTheDocument();
|
|
|
- await waitFor(() => userEvent.paste(codeTextBox, codeValue));
|
|
|
- await waitFor(() => userEvent.type(nameTextBox, nameValue));
|
|
|
+
|
|
|
+ await act(() => {
|
|
|
+ userEvent.paste(codeTextBox, codeValue);
|
|
|
+ userEvent.type(nameTextBox, nameValue);
|
|
|
+ });
|
|
|
+
|
|
|
expect(addFilterBtn).toBeEnabled();
|
|
|
expect(codeTextBox.value).toEqual(`${codeValue}\n\n`);
|
|
|
expect(nameTextBox).toHaveValue(nameValue);
|
|
@@ -81,7 +88,7 @@ describe('AddFilter component', () => {
|
|
|
const addFilterBtn = screen.getByRole('button', { name: /Add filter/i });
|
|
|
expect(addFilterBtn).toBeDisabled();
|
|
|
expect(screen.getByPlaceholderText('Enter Name')).toBeInTheDocument();
|
|
|
- await waitFor(() => userEvent.paste(codeTextBox, code));
|
|
|
+ await act(() => userEvent.paste(codeTextBox, code));
|
|
|
expect(addFilterBtn).toBeEnabled();
|
|
|
expect(codeTextBox).toHaveValue(`${code}\n\n`);
|
|
|
});
|
|
@@ -110,13 +117,13 @@ describe('AddFilter component', () => {
|
|
|
const nameValue = 'filter name';
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
- await waitFor(() =>
|
|
|
- setupComponent({
|
|
|
+ await act(() => {
|
|
|
+ renderComponent({
|
|
|
addFilter: addFilterMock,
|
|
|
activeFilterHandler: activeFilterHandlerMock,
|
|
|
toggleIsOpen: toggleModelMock,
|
|
|
- })
|
|
|
- );
|
|
|
+ });
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
afterEach(() => {
|
|
@@ -127,7 +134,7 @@ describe('AddFilter component', () => {
|
|
|
|
|
|
describe('OnSubmit conditions with codeValue and nameValue in fields', () => {
|
|
|
beforeEach(async () => {
|
|
|
- await waitFor(() => {
|
|
|
+ await act(() => {
|
|
|
userEvent.paste(
|
|
|
screen.getAllByRole('textbox')[0] as HTMLTextAreaElement,
|
|
|
codeValue
|
|
@@ -142,19 +149,20 @@ describe('AddFilter component', () => {
|
|
|
name: /Add filter/i,
|
|
|
});
|
|
|
expect(addFilterBtn).toBeEnabled();
|
|
|
- userEvent.click(addFilterBtn);
|
|
|
|
|
|
- await waitFor(() => expect(activeFilterHandlerMock).toHaveBeenCalled());
|
|
|
+ await act(() => userEvent.click(addFilterBtn));
|
|
|
+
|
|
|
+ expect(activeFilterHandlerMock).toHaveBeenCalled();
|
|
|
expect(addFilterMock).not.toHaveBeenCalled();
|
|
|
});
|
|
|
|
|
|
it('OnSubmit condition with checkbox on functionality', async () => {
|
|
|
- userEvent.click(screen.getByRole('checkbox'));
|
|
|
+ await act(() => {
|
|
|
+ userEvent.click(screen.getByRole('checkbox'));
|
|
|
+ userEvent.click(screen.getAllByRole('button')[1]);
|
|
|
+ });
|
|
|
|
|
|
- userEvent.click(screen.getAllByRole('button')[1]);
|
|
|
- await waitFor(() =>
|
|
|
- expect(activeFilterHandlerMock).not.toHaveBeenCalled()
|
|
|
- );
|
|
|
+ expect(activeFilterHandlerMock).not.toHaveBeenCalled();
|
|
|
expect(addFilterMock).toHaveBeenCalled();
|
|
|
expect(toggleModelMock).not.toHaveBeenCalled();
|
|
|
});
|
|
@@ -169,13 +177,12 @@ describe('AddFilter component', () => {
|
|
|
name: /Add filter/i,
|
|
|
});
|
|
|
|
|
|
- userEvent.clear(nameTextBox);
|
|
|
+ await act(() => userEvent.clear(nameTextBox));
|
|
|
+
|
|
|
expect(nameTextBox).toHaveValue('');
|
|
|
|
|
|
- userEvent.click(addFilterBtn);
|
|
|
- await waitFor(() =>
|
|
|
- expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1)
|
|
|
- );
|
|
|
+ await act(() => userEvent.click(addFilterBtn));
|
|
|
+ expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1);
|
|
|
|
|
|
expect(activeFilterHandlerMock).toHaveBeenCalledWith(
|
|
|
{
|
|
@@ -189,20 +196,18 @@ describe('AddFilter component', () => {
|
|
|
expect(codeTextBox).toHaveValue(``);
|
|
|
expect(toggleModelMock).toHaveBeenCalled();
|
|
|
|
|
|
- userEvent.paste(codeTextBox, codeValue);
|
|
|
+ await act(() => userEvent.paste(codeTextBox, codeValue));
|
|
|
expect(codeTextBox).toHaveValue(`${codeValue}\n\n`);
|
|
|
|
|
|
- userEvent.click(checkbox);
|
|
|
+ await act(() => userEvent.click(checkbox));
|
|
|
expect(addFilterBtn).toBeDisabled();
|
|
|
|
|
|
- userEvent.type(nameTextBox, nameValue);
|
|
|
+ await act(() => userEvent.type(nameTextBox, nameValue));
|
|
|
expect(nameTextBox).toHaveValue(nameValue);
|
|
|
- await waitFor(() => expect(addFilterBtn).toBeEnabled());
|
|
|
- userEvent.click(addFilterBtn);
|
|
|
+ expect(addFilterBtn).toBeEnabled();
|
|
|
+ await act(() => userEvent.click(addFilterBtn));
|
|
|
|
|
|
- await waitFor(() =>
|
|
|
- expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1)
|
|
|
- );
|
|
|
+ expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1);
|
|
|
expect(addFilterMock).toHaveBeenCalledWith({
|
|
|
name: nameValue,
|
|
|
code: codeValue,
|
|
@@ -217,34 +222,30 @@ describe('AddFilter component', () => {
|
|
|
)[0] as HTMLTextAreaElement;
|
|
|
const nameTextBox = screen.getAllByRole('textbox')[1];
|
|
|
const addFilterBtn = screen.getByRole('button', { name: /Add filter/i });
|
|
|
-
|
|
|
- userEvent.clear(nameTextBox);
|
|
|
- userEvent.clear(codeTextBox);
|
|
|
-
|
|
|
- await waitFor(() => {
|
|
|
+ await act(() => {
|
|
|
+ userEvent.clear(nameTextBox);
|
|
|
+ userEvent.clear(codeTextBox);
|
|
|
userEvent.paste(codeTextBox, longCodeValue);
|
|
|
});
|
|
|
|
|
|
expect(nameTextBox).toHaveValue('');
|
|
|
expect(codeTextBox).toHaveValue(`${longCodeValue}\n\n`);
|
|
|
|
|
|
- userEvent.click(addFilterBtn);
|
|
|
+ await act(() => userEvent.click(addFilterBtn));
|
|
|
|
|
|
const filterName = `${longCodeValue.slice(0, 16)}...`;
|
|
|
|
|
|
- await waitFor(() => {
|
|
|
- expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1);
|
|
|
- expect(activeFilterHandlerMock).toHaveBeenCalledWith(
|
|
|
- {
|
|
|
- name: filterName,
|
|
|
- code: longCodeValue,
|
|
|
- saveFilter: false,
|
|
|
- },
|
|
|
- -1
|
|
|
- );
|
|
|
- expect(codeTextBox.value).toEqual('');
|
|
|
- expect(toggleModelMock).toHaveBeenCalled();
|
|
|
- });
|
|
|
+ expect(activeFilterHandlerMock).toHaveBeenCalledTimes(1);
|
|
|
+ expect(activeFilterHandlerMock).toHaveBeenCalledWith(
|
|
|
+ {
|
|
|
+ name: filterName,
|
|
|
+ code: longCodeValue,
|
|
|
+ saveFilter: false,
|
|
|
+ },
|
|
|
+ -1
|
|
|
+ );
|
|
|
+ expect(codeTextBox).toHaveValue('');
|
|
|
+ expect(toggleModelMock).toHaveBeenCalled();
|
|
|
});
|
|
|
});
|
|
|
});
|