UNPKG

1.66 kBJavaScriptView Raw
1import React from 'react';
2import { render, screen } from '@testing-library/react';
3import '@testing-library/jest-dom';
4import { Spinner } from '..';
5import { testForChildrenInComponent, testForCustomTag } from '../testUtils';
6
7describe('Spinner', () => {
8 it('should render a span by default', () => {
9 render(<Spinner />);
10 expect(screen.getByText('Loading...').tagName.toLowerCase()).toMatch(
11 'span',
12 );
13 });
14
15 it('should render a custom tag when provided', () => {
16 testForCustomTag(Spinner, {}, 'main');
17 });
18
19 it('should default render "Loading..." children', () => {
20 render(<Spinner />);
21 expect(screen.getByText('Loading...')).toBeInTheDocument();
22 });
23
24 it('should render children', () => {
25 testForChildrenInComponent(Spinner);
26 });
27
28 it('should render visually-hidden children', () => {
29 render(<Spinner>Yo!</Spinner>);
30 expect(screen.getByText('Yo!')).toHaveClass('visually-hidden');
31 });
32
33 it('should render default type of border', () => {
34 render(<Spinner />);
35 expect(screen.getByRole('status')).toHaveClass('spinner-border');
36 });
37
38 it('should render type if specified', () => {
39 render(<Spinner type="grow" />);
40 expect(screen.getByRole('status')).toHaveClass('spinner-grow');
41 });
42
43 it('should render size if specified', () => {
44 render(<Spinner size="sm" />);
45 expect(screen.getByRole('status')).toHaveClass('spinner-border-sm');
46 expect(screen.getByRole('status')).toHaveClass('spinner-border');
47 });
48
49 it('should render color if specified', () => {
50 render(<Spinner color="primary" />);
51 expect(screen.getByRole('status')).toHaveClass('text-primary');
52 });
53});