From 4c5adc20e7dd488eef677208ed269bbbb480e652 Mon Sep 17 00:00:00 2001 From: David Lechner Date: Sat, 30 Jan 2021 16:33:33 -0600 Subject: [PATCH] add tests for AboutDialog --- src/about/AboutDialog.test.tsx | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/about/AboutDialog.test.tsx diff --git a/src/about/AboutDialog.test.tsx b/src/about/AboutDialog.test.tsx new file mode 100644 index 00000000..5c57eb19 --- /dev/null +++ b/src/about/AboutDialog.test.tsx @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +// Copyright (c) 2021 The Pybricks Authors + +import { I18nContext, I18nManager } from '@shopify/react-i18n'; +import { + getByLabelText, + render, + screen, + waitForElementToBeRemoved, +} from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; +import { Provider } from 'react-redux'; +import { createStore } from 'redux'; +import { rootReducer } from '../reducers'; +import AboutDialog from './AboutDialog'; + +it('should close when the button is clicked', () => { + const store = createStore(rootReducer); + const i18n = new I18nManager({ locale: 'en' }); + const close = jest.fn(); + render( + + + close()} /> + + , + ); + + userEvent.click(screen.getByLabelText('Close')); + + expect(close).toHaveBeenCalled(); +}); + +it('should manage license dialog open/close', async () => { + const store = createStore(rootReducer); + const i18n = new I18nManager({ locale: 'en' }); + render( + + + undefined} /> + + , + ); + + userEvent.click(screen.getByText('Open Source Licenses')); + + expect( + screen.getByText('Pybricks Code is built on open source software.', { + exact: false, + }), + ).toBeInTheDocument(); + + const licenseDialog = document.querySelector( + '.pb-license-dialog', + ) as HTMLDivElement; + userEvent.click(getByLabelText(licenseDialog, 'Close')); + + await waitForElementToBeRemoved(() => + screen.queryByText('Pybricks Code is built on open source software.', { + exact: false, + }), + ); +});