import { render } from '@testing-library/react'; import React from 'react'; import { SpinnerDotted } from '../SpinnerDotted'; describe('SpinnerDotted', () => { const color = 'red'; it('matches the snapshot', () => { const { container } = render( , ); expect(container).toMatchSnapshot(); }); it('matches the snapshot with default props', () => { const { container } = render(); expect(container).toMatchSnapshot(); }); it('renders null if disabled', () => { const { container } = render(); expect(container.firstChild).toBe(null); }); it('renders still if specified', () => { const { container } = render(); const circles = container.querySelectorAll('circle'); const last = circles.length - 1; expect(circles[0].style.animation).toBe(''); expect(circles[last].style.animation).toBe(''); expect(circles[last]).toHaveStyle({ display: 'none' }); }); it('passes props to styles', () => { const size = '20%'; const thickness = 40; const speed = 50; const { container } = render( , ); const circles = container.querySelectorAll('circle'); const last = circles.length - 1; const animationDuration = `${200 / speed}`; expect(container.firstChild).toHaveStyle({ width: size }); expect(circles[0]).toHaveAttribute('r', `${3 * (thickness / 100)}`); expect(circles[0].style.animation.includes(animationDuration)).toBe(true); expect(circles[last]).toHaveAttribute('r', `${6 * (thickness / 100)}`); expect(circles[last].style.animation.includes(animationDuration)).toBe( true, ); }); it('passes svg props overriding styles', () => { const className = 'test-class'; const { container } = render( , ); expect(container.firstChild).toHaveClass(className); expect(container.firstChild).toHaveStyle({ color }); }); });