import * as React from 'react'; import { render } from '@testing-library/react'; import { Provider } from 'react-redux'; import { Store } from '@reduxjs/toolkit'; import { ThemeProvider } from '../ThemeProvider'; import { configureAppStore } from 'store/configureStore'; import { useTheme } from 'styled-components'; import { selectTheme } from '../slice/selectors'; const renderThemeProvider = (store: Store, Child: React.FunctionComponent) => render( , ); describe('', () => { let store: ReturnType; beforeEach(() => { store = configureAppStore(); }); it('should render its children', () => { const text = 'Test'; const children = () =>

{text}

; const { queryByText } = renderThemeProvider(store, children); expect(queryByText(text)).toBeInTheDocument(); }); it('should render selected theme', () => { let theme: any; const children = () => { // eslint-disable-next-line react-hooks/rules-of-hooks theme = useTheme(); return

a

; }; renderThemeProvider(store, children); expect(theme).toBe(selectTheme(store.getState() as any)); }); });