import React from 'react'; import renderWithTheme from '../../../testUtils/renderWithTheme'; import Spinner from '..'; describe('rendering', () => { describe('spinner without content', () => { it('renders spinning element', () => { const { queryByTestId } = renderWithTheme( ); expect(queryByTestId('my-spinner')).toBeVisible(); }); }); describe('spinner with content', () => { describe('by default', () => { it('renders content but NOT the spinning element', () => { const { queryByTestId, queryByText } = renderWithTheme( Content ); expect(queryByTestId('my-spinner')).not.toBeInTheDocument(); expect(queryByText('Content')).toBeVisible(); }); }); describe('when loading is ON', () => { it('renders spinning element & content', () => { const { queryByTestId, queryByText } = renderWithTheme( Content ); expect(queryByTestId('my-spinner')).toBeVisible(); expect(queryByText('Content')).toBeVisible(); }); }); describe('when loading is OFF', () => { it('renders content but NOT the spinning element', () => { const { queryByTestId, queryByText } = renderWithTheme( Content ); expect(queryByTestId('my-spinner')).not.toBeInTheDocument(); expect(queryByText('Content')).toBeVisible(); }); }); describe('when loading is not specified', () => { it('renders content but NOT the spinning element', () => { const { queryByTestId, queryByText } = renderWithTheme( Content ); expect(queryByTestId('my-spinner')).not.toBeInTheDocument(); expect(queryByText('Content')).toBeVisible(); }); }); }); describe('with size', () => { it.each` size ${'small'} ${'medium'} ${'large'} `('renders correctly with $size', ({ size }) => { const { container } = renderWithTheme(
Content
); expect(container.firstChild).toMatchSnapshot(); }); }); });