import { render, screen } from '@testing-library/react';
import '@testing-library/jest-dom';
import FileDetailsLabel from './FileDetailsLabel';
import userEvent from '@testing-library/user-event';
import { BellIcon } from '@patternfly/react-icons';
describe('FileDetailsLabel', () => {
it('should render file details label', () => {
const { container } = render();
expect(container).toMatchSnapshot();
});
it('should render file details correctly if an extension we support is passed in', () => {
render();
expect(screen.getByText('test')).toBeTruthy();
expect(screen.getByText('TEXT')).toBeTruthy();
});
it('should skip language if we do not support an extension', () => {
render();
expect(screen.getByText('test')).toBeTruthy();
expect(screen.queryByTestId('language')).toBeFalsy();
});
it('should pass file size down', () => {
render();
expect(screen.getByText('100MB')).toBeTruthy();
});
it('should pass truncation prop down as true by default', () => {
render();
expect(screen.getByText('test')).toBeTruthy();
expect(screen.queryByText('test.svg')).toBeFalsy();
});
it('should pass truncation prop down when false', () => {
render();
expect(screen.getByText('test.svg')).toBeTruthy();
});
it('should not show spinner by default', () => {
render();
expect(screen.queryByTestId('spinner')).toBeFalsy();
});
it('should show spinner if loading', () => {
render();
expect(screen.getByText('test')).toBeTruthy();
expect(screen.getByText('TEXT')).toBeTruthy();
expect(screen.queryByTestId('spinner')).toBeTruthy();
});
it('should call onClick prop', async () => {
const spy = jest.fn();
render();
await userEvent.click(screen.getByRole('button'));
expect(spy).toHaveBeenCalledTimes(1);
});
it('should call onClose prop', async () => {
const spy = jest.fn();
render();
await userEvent.click(screen.getByRole('button', { name: /Close test.txt/i }));
expect(spy).toHaveBeenCalledTimes(1);
});
it('should use closeButtonAriaLabel prop appropriately', () => {
render();
expect(screen.getByRole('button', { name: /Delete file/i })).toBeTruthy();
});
it('should support custom close icon', () => {
render(
} />
);
expect(screen.getByTestId('bell')).toBeTruthy();
});
});