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' ); }); });