mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-04 22:00:59 -04:00
* feat(alert): initialize component * feat(alert): add children prop * feat(alert): add className prop * feat(alert): add variant prop * feat(alert): add close button and handle onDismiss click * feat(alert): place all alert related css in alert.css * feat: define state color variables and use them instead of bootstrap ones * chore: remove unused classes * feat: replace base alert styles with tailwind classes * feat: extract close button to separate component * chore: remove unused css * test: add close button tests * refactor: use more tailwind-like approach for adding colors to theme * refactor: use more expressive prop name for close button label * refactor: use semantic color names * feat: add stories with/without close button * chore: add missing variants
31 lines
889 B
TypeScript
31 lines
889 B
TypeScript
import { render, screen } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
import React from 'react';
|
|
import { CloseButton } from './close-button';
|
|
|
|
describe('<CloseButton>', () => {
|
|
it('should render', () => {
|
|
render(<CloseButton onClick={jest.fn()} />);
|
|
|
|
expect(screen.getByRole('button')).toBeInTheDocument();
|
|
});
|
|
|
|
it('should set "aria-label" to "label" prop', () => {
|
|
const expectedLabel = 'Close me please';
|
|
render(<CloseButton label={expectedLabel} onClick={jest.fn()} />);
|
|
|
|
expect(
|
|
screen.getByRole('button', { name: expectedLabel })
|
|
).toBeInTheDocument();
|
|
});
|
|
|
|
it('should call "onClick" handler on button click', () => {
|
|
const onClick = jest.fn();
|
|
render(<CloseButton onClick={onClick} />);
|
|
|
|
userEvent.click(screen.getByRole('button'));
|
|
|
|
expect(onClick).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|