import { render, screen } from '@testing-library/react';
import RhUiDocumentIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-document-icon';
import { EmptyState, EmptyStateVariant } from '../EmptyState';
import { EmptyStateBody } from '../EmptyStateBody';
import { EmptyStateActions } from '../EmptyStateActions';
import { Button } from '../../Button';
import { EmptyStateHeader } from '../EmptyStateHeader';
import { EmptyStateFooter } from '../EmptyStateFooter';
import styles from '@patternfly/react-styles/css/components/EmptyState/empty-state';
describe('EmptyState', () => {
test('Main', () => {
const { asFragment } = render(
Defining HTTP Proxies that exist on your network allows you to perform various actions through those proxies.
);
expect(asFragment()).toMatchSnapshot();
});
test('Main variant large', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('Main variant small', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('Main variant xs', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('Body', () => {
render();
expect(screen.getByTestId('body-test-id')).toHaveClass(`${styles.emptyStateBody} custom-empty-state-body`);
});
test('Actions', () => {
render();
expect(screen.getByTestId('actions-test-id')).toHaveClass(styles.emptyStateActions);
});
test('Full height', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('Header with icon', () => {
const { asFragment } = render();
expect(asFragment()).toMatchSnapshot();
});
test('Header with title text renders heading level 1 by default', () => {
render();
expect(screen.getByRole('heading', { level: 1, name: 'Empty state' })).toHaveClass(styles.emptyStateTitleText);
});
test('Header renders custom class passed via titleClassName', () => {
render();
expect(screen.getByRole('heading', { level: 1, name: 'Empty state' })).toHaveClass('testTitleClassName');
});
test('Header renders the title as other heading levels when one is passed using headingLevel', () => {
render();
expect(screen.getByRole('heading', { level: 3, name: 'Empty state' })).toHaveClass(styles.emptyStateTitleText);
});
test('title is not rendered when titleText is not passed', () => {
render();
expect(screen.queryByRole('heading', { level: 3 })).not.toBeInTheDocument();
});
test('Footer', () => {
render();
expect(screen.getByTestId('actions-test-id')).toHaveClass('custom-empty-state-footer');
});
});