import axe from '../../../../axe-helper';
import React from 'react';
import { render } from '@testing-library/react';
import Text from './Text';
import { colors } from '../../../constants';
import 'jest-styled-components';
describe('', () => {
it('renders without a11y violations', async () => {
const { container } = render(Text);
const results = await axe(container.innerHTML);
expect(results).toHaveNoViolations();
expect(container).toMatchSnapshot();
});
it('can render with bottom white-space', () => {
const { container } = render(
Long paragraph with some bottom white-space to prevent text next to it colliding.
,
);
expect(container.firstChild).toHaveStyleRule('margin', '0');
});
it('should render inline by default', () => {
const { container } = render();
expect(container).not.toHaveStyleRule('display', 'block');
});
it.each`
margin
${'m-6'}
${'mt-6'}
${'mb-8'}
${'ml-8'}
${'mr-6'}
${'mx-2'}
${'my-2'}
${'m:mb-2'}
${'m:m-2'}
`('should apply block display when supplied a spacing class: $margin', ({ margin }) => {
const { container } = render();
expect(container.firstChild).toHaveStyleRule('display', 'block');
});
it.each`
padding
${'p-6'}
${'pt-6'}
${'pb-8'}
${'pl-8'}
${'pr-6'}
${'px-2'}
${'py-2'}
${'m:pb-2'}
${'m:p-2'}
`('should apply block display when supplied a spacing class: $padding', ({ padding }) => {
const { container } = render();
expect(container.firstChild).toHaveStyleRule('display', 'block');
});
it.each`
tag
${'span'}
${'p'}
`('it can render as an HTML $tag tag', ({ tag }) => {
const { container } = render(Text);
expect(container.firstChild).toMatchSnapshot();
});
it.each`
size | pixels
${'lead'} | ${'18px'}
${'body'} | ${'16px'}
${'small'} | ${'14px'}
`('can render at different sizes: $size – $pixels', ({ size, pixels }) => {
const { container } = render(Text);
expect(container.firstChild).toHaveStyleRule('font-size', pixels);
});
it.each`
name | weight
${'regular'} | ${'400'}
${'semiBold'} | ${'600'}
${'bold'} | ${'700'}
`('can render at different weights: $name', ({ name, weight }) => {
const { container } = render(Text);
expect(container.firstChild).toHaveStyleRule('font-weight', weight);
});
it.each`
hex | name
${colors.white} | ${'White'}
${colors.grey} | ${'Grey'}
${colors.greyDarkest} | ${'Grey Darkest'}
${colors.success} | ${'Success'}
${colors.alert} | ${'Alert'}
${colors.alertDark} | ${'Alert Dark'}
`('can render in different colors: $name – $hex', ({ hex }) => {
const { container } = render(Text);
expect(container.firstChild).toHaveStyleRule('color', hex);
});
it.each`
direction
${'left'}
${'right'}
${'center'}
`('can align at: $direction', ({ direction }) => {
const { container } = render(Text);
expect(container.firstChild).toHaveStyleRule('text-align', direction);
});
});