import { render, screen } from '@testing-library/react';
import '@testing-library/jest-dom';
import userEvent from '@testing-library/user-event';
import { DownloadIcon } from '@patternfly/react-icons';
import ResponseActionButton from './ResponseActionButton';
describe('ResponseActionButton', () => {
it('renders aria-label correctly if not clicked', () => {
render(} ariaLabel="Download" clickedAriaLabel="Downloaded" />);
expect(screen.getByRole('button', { name: 'Download' })).toBeTruthy();
});
it('renders aria-label correctly if clicked', () => {
render(
} ariaLabel="Download" clickedAriaLabel="Downloaded" isClicked />
);
expect(screen.getByRole('button', { name: 'Downloaded' })).toBeTruthy();
});
it('renders tooltip correctly if not clicked', async () => {
render(
} tooltipContent="Download" clickedTooltipContent="Downloaded" />
);
expect(screen.getByRole('button', { name: 'Download' })).toBeTruthy();
// clicking here just triggers the tooltip; in this button, the logic is divorced from whether it is actually clicked
await userEvent.click(screen.getByRole('button', { name: 'Download' }));
expect(screen.getByRole('tooltip', { name: 'Download' })).toBeTruthy();
});
it('renders tooltip correctly if clicked', async () => {
render(
}
tooltipContent="Download"
clickedTooltipContent="Downloaded"
isClicked
/>
);
expect(screen.getByRole('button', { name: 'Downloaded' })).toBeTruthy();
// clicking here just triggers the tooltip; in this button, the logic is divorced from whether it is actually clicked
await userEvent.click(screen.getByRole('button', { name: 'Downloaded' }));
expect(screen.getByRole('tooltip', { name: 'Downloaded' })).toBeTruthy();
});
it('if clicked variant for tooltip is not supplied, it uses the default', async () => {
render(} tooltipContent="Download" isClicked />);
// clicking here just triggers the tooltip; in this button, the logic is divorced from whether it is actually clicked
await userEvent.click(screen.getByRole('button', { name: 'Download' }));
expect(screen.getByRole('button', { name: 'Download' })).toBeTruthy();
});
it('if clicked variant for aria label is not supplied, it uses the default', async () => {
render(} ariaLabel="Download" isClicked />);
expect(screen.getByRole('button', { name: 'Download' })).toBeTruthy();
});
});