/**
* Copyright (c) Paymium.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root of this projects source tree.
*/
import React from 'react';
import { render, screen, userEvent } from '@crossed/test';
import { CloseButton } from '../CloseButton';
import { inlineStyle } from '@crossed/styled';
describe('CloseButton', () => {
it('renders correctly with default props', () => {
render();
const button = screen.getByRole('button', { name: /close/i });
expect(button).toBeTruthy();
expect(button).toHaveAttribute('aria-label', 'Close');
});
it('calls onPress when clicked', async () => {
const onPressMock = jest.fn();
render();
const button = screen.getByRole('button', { name: /close/i });
await userEvent.click(button);
expect(onPressMock).toHaveBeenCalledTimes(1);
});
it('does not call onPress when disabled', async () => {
const onPressMock = jest.fn();
render();
const button = screen.getByRole('button', { name: /close/i });
await userEvent.click(button, { pointerEventsCheck: 0 });
expect(onPressMock).not.toHaveBeenCalled();
expect(button).toBeDisabled();
});
it('applies custom props and styles', () => {
render(
({ base: { opacity: 0.8 } }))}
/>
);
const button = screen.getByTestId('close-button');
expect(button).toBeTruthy();
});
it('renders the icon with the correct size', () => {
render();
const icon = screen.getByLabelText('Close').children[0]; // Supposant que l'icône a le rôle d'image
expect(icon).toHaveAttribute('width', '16'); // Vérifie que la taille est correcte
expect(icon).toHaveAttribute('height', '16');
});
});