import { render, screen, fireEvent } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import { Checkbox } from '.';
import { HelperText } from '../HelperText';
describe('Checkbox Component', () => {
it('renders the default Checkbox', () => {
const component = render(
Aceitar termos e condições da promoção
Você concorda com nossos Termos de Serviço e Política de Privacidade.
);
const checkbox = screen.getByRole('checkbox', { name: /aceitar termos e condições da promoção/i });
const helperText = screen.getByText(/você concorda com nossos termos de serviço e política de privacidade/i);
expect(checkbox).toBeInTheDocument();
expect(helperText).toBeInTheDocument();
expect(checkbox).not.toBeChecked();
fireEvent.click(checkbox);
expect(checkbox).toBeChecked();
expect(component.baseElement).toMatchSnapshot();
});
it('renders the disabled Checkbox', () => {
const component = render(
Aceitar termos e condições da promoção
Você concorda com nossos Termos de Serviço e Política de Privacidade.
);
const checkbox = screen.getByRole('checkbox', { name: /aceitar termos e condições da promoção/i });
expect(checkbox).toBeDisabled();
expect(component.baseElement).toMatchSnapshot();
});
it('renders Checkbox with label', () => {
render(
Aceitar termos e condições da promoção
);
const checkbox = screen.getByRole('checkbox', { name: /aceitar termos e condições da promoção/i });
expect(checkbox).toBeInTheDocument();
expect(checkbox).not.toBeChecked();
fireEvent.click(checkbox);
expect(checkbox).toBeChecked();
});
it('renders Checkbox with helper text', () => {
render(
Aceitar termos e condições da promoção
Você concorda com nossos Termos de Serviço e Política de Privacidade.
);
const helperText = screen.getByText(/você concorda com nossos termos de serviço e política de privacidade/i);
expect(helperText).toBeInTheDocument();
});
});