/* * Copyright (c) 2015 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause */ import React from 'react'; import { fireEvent, screen, waitForElementToBeRemoved, } from '@testing-library/react'; import render from '../../test/testrenderer'; import ErrorDialog from './ErrorDialog'; import { showDialog } from './errorDialogSlice'; describe('ErrorDialog', () => { it('is not rendered when there is no error', () => { render(); expect(screen.queryByRole('dialog')).not.toBeInTheDocument(); }); it('renders visible dialog with one message', () => { render(, [showDialog('An error occured')]); expect(screen.getByRole('dialog')).toBeInTheDocument(); expect(screen.getByText('An error occured')).toBeInTheDocument(); }); it('renders visible dialog with two messages', () => { render(, [ showDialog('An error occured'), showDialog('Another error occured'), ]); expect(screen.getByRole('dialog')).toBeInTheDocument(); expect(screen.getByText('An error occured')).toBeInTheDocument(); expect(screen.getByText('Another error occured')).toBeInTheDocument(); }); describe('has a close button', () => { it('with the text "Close"', () => { render(, [showDialog('An error occured')]); expect(screen.getByRole('button')).toHaveTextContent('Close'); }); it('of which the first closes the dialog', async () => { render(, [showDialog('An error occured')]); fireEvent.click(screen.getByRole('button')); await waitForElementToBeRemoved(screen.queryByRole('dialog')); }); }); it('can have custom error resolutions', () => { const specialHandling = jest.fn(); render(, [ showDialog('An error occured', { 'Special Handling': specialHandling, }), ]); fireEvent.click(screen.getByText('Special Handling')); expect(specialHandling).toHaveBeenCalled(); }); });