datajunction-ui
Version:
DataJunction Metrics Platform UI
56 lines (49 loc) • 1.88 kB
JSX
import * as React from 'react';
import { render, screen } from '@testing-library/react';
import QueryInfo from '../QueryInfo';
describe('<QueryInfo />', () => {
const defaultProps = {
id: '123',
state: 'Running',
engine_name: 'Spark SQL',
engine_version: '1.0',
errors: ['Error 1', 'Error 2'],
links: ['http://example.com', 'http://example2.com'],
output_table: 'table1',
scheduled: '2023-09-06',
started: '2023-09-07',
numRows: 1000,
};
it('renders without crashing', () => {
render(<QueryInfo {...defaultProps} />);
});
it('displays correct query information', () => {
render(<QueryInfo {...defaultProps} />);
expect(screen.getByText(defaultProps.id)).toBeInTheDocument();
expect(
screen.getByText(
`${defaultProps.engine_name} - ${defaultProps.engine_version}`,
),
).toBeInTheDocument();
expect(screen.getByText(defaultProps.state)).toBeInTheDocument();
expect(screen.getByText(defaultProps.scheduled)).toBeInTheDocument();
expect(screen.getByText(defaultProps.started)).toBeInTheDocument();
expect(screen.getByText(defaultProps.output_table)).toBeInTheDocument();
expect(screen.getByText(String(defaultProps.numRows))).toBeInTheDocument();
defaultProps.errors.forEach(error => {
expect(screen.getByText(error)).toBeInTheDocument();
});
defaultProps.links.forEach(link => {
expect(screen.getByText(link)).toHaveAttribute('href', link);
});
});
it('does not render errors and links when they are not provided', () => {
render(<QueryInfo {...defaultProps} errors={[]} links={[]} />);
defaultProps.errors.forEach(error => {
expect(screen.queryByText(error)).not.toBeInTheDocument();
});
defaultProps.links.forEach(link => {
expect(screen.queryByText(link)).not.toBeInTheDocument();
});
});
});