UNPKG

fannypack

Version:

An accessible, composable, and friendly React UI Kit

304 lines (294 loc) 9.01 kB
import React from 'react'; import render from '../../_utils/tests/render'; import Table from '../Table'; import 'jest-styled-components'; it('renders correctly for a basic table', () => { const { container } = render( <Table> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for a table with a footer', () => { const { container } = render( <Table> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> <Table.Foot> <Table.Row> <Table.Cell>Total</Table.Cell> <Table.Cell /> <Table.Cell>$36.00</Table.Cell> </Table.Row> </Table.Foot> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for a full width table', () => { const { container } = render( <Table isFullWidth> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); describe('borders', () => { it('renders correctly when an outer border is set', () => { const { container } = render( <Table hasBorder> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly when row borders are set', () => { const { container } = render( <Table> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body hasBorders> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); }); it('renders correctly for a striped table', () => { const { container } = render( <Table isStriped> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for a hoverable table', () => { const { container } = render( <Table isHoverable> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for a table with a top caption', () => { const { container } = render( <Table> <Table.Caption>Fannypacks</Table.Caption> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); }); it('renders correctly for a table with a bottom caption', () => { const { container } = render( <Table> <Table.Caption position="bottom">Fannypacks</Table.Caption> <Table.Head> <Table.Row> <Table.HeadCell>Name</Table.HeadCell> <Table.HeadCell>Quantity</Table.HeadCell> <Table.HeadCell>Price</Table.HeadCell> </Table.Row> </Table.Head> <Table.Body> <Table.Row> <Table.Cell>Nike</Table.Cell> <Table.Cell>3</Table.Cell> <Table.Cell>$9.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>Adidas</Table.Cell> <Table.Cell>4</Table.Cell> <Table.Cell>$12.00</Table.Cell> </Table.Row> <Table.Row> <Table.Cell>North Face</Table.Cell> <Table.Cell>5</Table.Cell> <Table.Cell>$15.00</Table.Cell> </Table.Row> </Table.Body> </Table> ); expect(container.firstChild).toMatchSnapshot(); });