1 | import React from 'react';
|
2 | import { render, screen } from '@testing-library/react';
|
3 | import '@testing-library/jest-dom';
|
4 | import { Spinner } from '..';
|
5 | import { testForChildrenInComponent, testForCustomTag } from '../testUtils';
|
6 |
|
7 | describe('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 | });
|