import React from 'react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { FileCard } from '.'; import { renderWithGrapesProvider } from '../../test-utils/renderers'; describe('FileCard component', () => { describe('given default props', () => { it('has a button with the title from props as child', () => { render( , ); expect(screen.getByRole('article', { name: 'My text' })).toBeVisible(); }); }); describe('given a `className` prop', () => { it("adds it to the component's classnames", () => { render( , ); expect(screen.getByRole('article', { name: 'My text' })).toHaveClass( 'MyFileCard', ); }); }); describe('given `onClick` prop', () => { it('calls `onClick` when clicking on the button', async () => { const handleClick = vi.fn(); render(); await userEvent.click(screen.getByRole('button', { name: 'My text' })); expect(handleClick).toHaveBeenCalledTimes(1); }); }); describe('given `onDelete` prop', () => { it('calls `onDelete` when clicking on the button', async () => { const handleDelete = vi.fn(); renderWithGrapesProvider( , ); await userEvent.click( screen.getByRole('button', { name: 'Delete My text' }), ); expect(handleDelete).toHaveBeenCalledTimes(1); }); }); describe('given `description` prop', () => { it('displays the description and label the FileCard', async () => { renderWithGrapesProvider( , ); expect(screen.getByText('My description')).toBeVisible(); expect( screen.getByRole('article', { name: 'My text' }), ).toHaveAccessibleDescription('My description'); }); }); });