Skip to content

Commit 38cf911

Browse files
committed
chore: add tests for checkbox
1 parent afef170 commit 38cf911

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import React from 'react';
2+
import { fireEvent, render, screen } from '@testing-library/react';
3+
import { Checkbox } from '../';
4+
5+
describe('Checkbox', () => {
6+
test('renders checkbox with label', () => {
7+
render(<Checkbox name="test-checkbox" label="Test Checkbox" readOnly />);
8+
expect(screen.getByRole('checkbox')).toBeInTheDocument();
9+
expect(screen.getByLabelText('Test Checkbox')).toBeInTheDocument();
10+
});
11+
12+
test('renders checked checkbox', () => {
13+
render(<Checkbox name="test-checkbox" checked readOnly />);
14+
expect(screen.getByRole('checkbox')).toBeChecked();
15+
});
16+
17+
test('renders unchecked checkbox', () => {
18+
render(<Checkbox name="test-checkbox" checked={false} readOnly />);
19+
expect(screen.getByRole('checkbox')).not.toBeChecked();
20+
});
21+
22+
test('renders disabled checkbox', () => {
23+
render(<Checkbox name="test-checkbox" disabled />);
24+
expect(screen.getByRole('checkbox')).toBeDisabled();
25+
});
26+
27+
test('renders checkbox with error state', () => {
28+
render(<Checkbox name="test-checkbox" label="Test Checkbox" error={true} readOnly />);
29+
expect(screen.getByRole('checkbox')).toBeInTheDocument();
30+
31+
const checkboxWrapper = screen.getByLabelText('Test Checkbox')?.parentElement?.parentElement;
32+
expect(checkboxWrapper?.querySelector('.deriv-checkbox__label')).toHaveClass(
33+
'deriv-checkbox__label--error'
34+
);
35+
});
36+
37+
test('triggers onChange event when clicked', () => {
38+
const handleChange = jest.fn();
39+
render(<Checkbox name="test-checkbox" onChange={handleChange} />);
40+
fireEvent.click(screen.getByRole('checkbox'));
41+
expect(handleChange).toHaveBeenCalledTimes(1);
42+
});
43+
44+
test('applies custom className to checkbox input', () => {
45+
render(<Checkbox name="test-checkbox" className="custom-class" readOnly />);
46+
expect(screen.getByRole('checkbox')).toHaveClass('custom-class');
47+
});
48+
49+
test('applies custom labelClassName to label', () => {
50+
render(
51+
<Checkbox name="test-checkbox" label="Test Checkbox" labelClassName="custom-label-class" readOnly />
52+
);
53+
54+
const checkboxWrapper = screen.getByLabelText('Test Checkbox')?.parentElement?.parentElement;
55+
expect(checkboxWrapper?.querySelector('.deriv-checkbox__label')).toHaveClass(
56+
'custom-label-class'
57+
);
58+
});
59+
60+
test('applies custom wrapperClassName to wrapper div', () => {
61+
render(
62+
<Checkbox name="test-checkbox" label="Test Checkbox" wrapperClassName="custom-wrapper-class" readOnly />
63+
);
64+
65+
const checkboxWrapper = screen.getByLabelText('Test Checkbox')?.parentElement?.parentElement;
66+
expect(checkboxWrapper).toHaveClass('custom-wrapper-class');
67+
});
68+
});

0 commit comments

Comments
 (0)