import { render, screen } from '@testing-library/react';
import type { KeyValueTableProps } from './key-value-table';
import { KeyValueTable, KeyValueTableRow } from './key-value-table';
const props: KeyValueTableProps = {
title: 'Title',
headingLevel: 3,
children: undefined,
};
it('Renders the correct elements', () => {
const { container } = render(
My label
My value
My label 2
My value 2
);
expect(screen.getByText(props.title || '')).toBeInTheDocument();
expect(screen.getByTestId('key-value-table')).toBeInTheDocument();
expect(container.getElementsByTagName('dl')).toHaveLength(2);
const rows = container.getElementsByTagName('dl');
// Row 1
expect(rows[0].firstChild).toHaveTextContent('My label');
expect(rows[0].children[1]).toHaveTextContent('My value');
// Row 2
expect(rows[1].firstChild).toHaveTextContent('My label 2');
expect(rows[1].children[1]).toHaveTextContent('My value 2');
});
it('Applies numeric class if prop is passed row not inline', () => {
render(
My label
My value
);
expect(screen.getByTestId('key-value-table')).toHaveClass(
'w-full border-collapse mb-8 [border-spacing:0] break-all'
);
expect(screen.getByTestId('key-value-table-row')).toHaveClass(
' flex gap-1 flex-wrap justify-between border-b first:border-t border-black dark:border-white flex-col items-start'
);
});
it('Applies numeric class if prop is passed row inline', () => {
render(
My label
My value
);
expect(screen.getByTestId('key-value-table')).toHaveClass(
'w-full border-collapse mb-8 [border-spacing:0] break-all'
);
expect(screen.getByTestId('key-value-table-row')).toHaveClass(
'flex gap-1 flex-wrap justify-between border-b first:border-t border-black dark:border-white flex-row items-center'
);
});
it('Applies muted class if prop is passed', () => {
render(
My label
My value
);
expect(screen.getByTestId('key-value-table')).toHaveClass(
'w-full border-collapse mb-8 [border-spacing:0] break-all'
);
});
it('Applies id to row if passed', () => {
render(
My value
My value
);
expect(screen.getByTestId('key-value-table-row')).toHaveAttribute(
'id',
'thisistheid'
);
});