import { render, fireEvent, screen } from '@testing-library/react'; import { IntlProvider } from 'react-intl'; import BaseCard from './BaseCard'; describe('BaseCard', () => { const defaultProps = { children: 'Test Content', testId: 'test-card', }; it('renders', () => { const props = { ...defaultProps, children: 'Test text', }; const { rerender } = render(Test Content); expect(screen.getByTestId('test-card')).toBeInTheDocument(); expect(screen.getByTestId('test-card')).toHaveClass('np-Card'); // Change props rerender(); expect(screen.getByText('Test text')).toBeInTheDocument(); }); it('is set with class by the `className` prop', () => { const props = { ...defaultProps, className: 'test-custom', }; const { rerender } = render(); expect(screen.getByTestId('test-card')).not.toHaveClass('test-custom'); // Change props rerender(); expect(screen.getByTestId('test-card')).toHaveClass('test-custom'); }); it('applies `is-disabled` class when isDisabled is true', () => { const props = { ...defaultProps, isDisabled: true, }; const { rerender } = render(); expect(screen.getByTestId('test-card')).not.toHaveClass('is-disabled'); // Change props rerender(); expect(screen.getByTestId('test-card')).toHaveClass('is-disabled'); }); it('applies `np-Card--small` class when isSmall is true', () => { const props = { ...defaultProps, isSmall: true, }; const { rerender } = render(); expect(screen.getByTestId('test-card')).not.toHaveClass('np-Card--small'); // Change props rerender(); expect(screen.getByTestId('test-card')).toHaveClass('np-Card--small'); }); it('renders CloseButton and handles onDismiss', () => { const mockOnDismiss = jest.fn(); const props = { ...defaultProps, onDismiss: mockOnDismiss, }; render( , ); fireEvent.click(screen.getByTestId('close-button')); // onClick function has been called. expect(mockOnDismiss).toHaveBeenCalledTimes(1); }); });