import React from 'react';
import {
cleanup,
fireEvent,
render,
screen,
waitForElementToBeRemoved,
} from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
import { Toast } from './';
afterEach(cleanup);
test('should take a snapshot', () => {
const { asFragment } = render(
{}}>
);
expect(asFragment()).toMatchSnapshot();
});
describe('Tests Toast', () => {
test('Renders component', async () => {
render(
It's Toast content
);
expect(screen.getByRole('alert')).toHaveTextContent("It's Toast content");
});
test('tests autoCloseTimer and closeTimer', async () => {
render(
It's Toast content
);
const alert = screen.getByRole('alert');
await waitForElementToBeRemoved(alert);
expect(screen.getByTestId('portal-testid-portal-top-right')).toContainHTML(
'
'
);
});
test('tests onClick', async () => {
render(
It's Toast content
);
const alert = screen.getByRole('alert');
fireEvent.click(screen.getByRole('button'));
await waitForElementToBeRemoved(alert);
expect(screen.getByTestId('portal-testid-portal-top-right')).toContainHTML(
''
);
});
test('tests positioning', async () => {
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-top')).toHaveClass('top');
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-top-right')).toHaveClass(
'top-right'
);
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-right')).toHaveClass(
'right'
);
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-bottom-right')).toHaveClass(
'bottom-right'
);
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-bottom')).toHaveClass(
'bottom'
);
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-bottom-left')).toHaveClass(
'bottom-left'
);
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-left')).toHaveClass('left');
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-top-left')).toHaveClass(
'top-left'
);
if (Toast.defaultProps?.portalPosition) {
Toast.defaultProps.portalPosition = undefined;
}
render(
It's Toast content
);
expect(screen.getByTestId('portal-testid-portal-undefined')).toHaveClass(
'undefined'
);
});
});