@navinc/base-react-components
Version:
Nav's Pattern Library
51 lines (45 loc) • 2.03 kB
JavaScript
import { renderWithContext } from './tests/with-app-context.js'
import { screen } from '@testing-library/react'
import { CopyVariant as Copy, getStyle, sizes } from './copy-variant.js'
describe('Base Components: CopyVariant', () => {
describe('render', () => {
it('renders CopyVariant', () => {
renderWithContext(<Copy>test text</Copy>)
expect(screen.getByText('test text')).toBeInTheDocument()
expect(screen.getByText('test text').tagName).toBe('P')
})
it('renders CopyVariant as span', () => {
renderWithContext(<Copy component="span">test text</Copy>)
expect(screen.getByText('test text')).toBeInTheDocument()
expect(screen.getByText('test text').tagName).toBe('SPAN')
})
it('renders CopyVariant as H1', () => {
renderWithContext(<Copy component="h1">test text</Copy>)
expect(screen.getByText('test text')).toBeInTheDocument()
expect(screen.getByText('test text').tagName).toBe('H1')
})
})
})
describe('getStyle', () => {
Object.entries(sizes).forEach(([key, value]) => {
Object.entries(value).forEach(([variant, cssProps]) => {
Object.keys(cssProps).forEach((cssProp) => {
it(`returns the style for the given size - ${key} ${variant} ${cssProp}`, () => {
expect(getStyle(cssProp, key, variant)).toEqual(sizes[key][variant][cssProp])
})
})
})
})
it('returns the default variant if variant is not available', () => {
expect(getStyle('fontSize', 'headline', 'regular')).toEqual('16px')
expect(getStyle('lineHeight', 'headline', 'regular')).toEqual('22px')
expect(getStyle('fontWeight', 'headline', 'regular')).toEqual(600)
expect(getStyle('letterSpacing', 'headline', 'regular')).toEqual('0')
})
it('returns the default style if no size is provided', () => {
expect(getStyle('fontSize')).toEqual('14px')
expect(getStyle('lineHeight')).toEqual('20px')
expect(getStyle('fontWeight')).toEqual(400)
expect(getStyle('letterSpacing')).toEqual('-0.25px')
})
})