Improve code coverage

This commit is contained in:
David Lechner
2022-02-22 12:32:20 -06:00
parent b3ed75f02b
commit a0da9f7111
6 changed files with 153 additions and 1 deletions
+69 -1
View File
@@ -1,11 +1,15 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2021 The Pybricks Authors
import { fireEvent, render, screen } from '@testing-library/react';
import { I18nContext, I18nManager } from '@shopify/react-i18n';
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { mock } from 'jest-mock-extended';
import React from 'react';
import { Provider } from 'react-redux';
import { Store } from 'redux';
import { BleConnectionState } from '../ble/reducers';
import { RootState } from '../reducers';
import StatusBar from './StatusBar';
it('should prevent browser context menu', () => {
@@ -24,3 +28,67 @@ it('should prevent browser context menu', () => {
expect(fireEvent.contextMenu(screen.getByRole('status'))).toBe(false);
});
it('should show popover when hub name is clicked', async () => {
const testHubName = 'Test hub';
const store = mock<Store<RootState>>({
getState: () =>
mock<RootState>({
ble: {
connection: BleConnectionState.Connected,
deviceName: testHubName,
deviceType: 'hub type',
deviceFirmwareVersion: 'v0.0.0',
deviceLowBatteryWarning: false,
deviceBatteryCharging: false,
},
}),
});
const i18n = new I18nManager({ locale: 'en' });
render(
<Provider store={store}>
<I18nContext.Provider value={i18n}>
<StatusBar />
</I18nContext.Provider>
</Provider>,
);
userEvent.click(screen.getByText(testHubName));
await waitFor(() => screen.getByText('Connected to:'));
});
it('should show popover when battery is clicked', async () => {
const testHubName = 'Test hub';
const store = mock<Store<RootState>>({
getState: () =>
mock<RootState>({
ble: {
connection: BleConnectionState.Connected,
deviceName: testHubName,
deviceType: 'hub type',
deviceFirmwareVersion: 'v0.0.0',
deviceLowBatteryWarning: false,
deviceBatteryCharging: false,
},
}),
});
const i18n = new I18nManager({ locale: 'en' });
render(
<Provider store={store}>
<I18nContext.Provider value={i18n}>
<StatusBar />
</I18nContext.Provider>
</Provider>,
);
userEvent.click(screen.getByTitle('Battery'));
await waitFor(() => screen.getByText('Battery level is OK.'));
});