-
Notifications
You must be signed in to change notification settings - Fork 120
Expand file tree
/
Copy pathCollapse.test.tsx
More file actions
84 lines (71 loc) · 2.91 KB
/
Collapse.test.tsx
File metadata and controls
84 lines (71 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import React from 'react'
import { screen, render, fireEvent } from '@testing-library/react'
import Collapse from './'
describe('Collapse', () => {
test('Should render Collapse', () => {
const { container } = render(<Collapse />)
const collapseDiv = container.querySelector('.collapse')
expect(collapseDiv).toBeInTheDocument()
})
test('Should apply additional class names', () => {
const { container } = render(<Collapse className="custom-class" />)
expect(container.firstChild).toHaveClass('custom-class')
})
test('Should allow passing extra props', () => {
render(<Collapse data-testid="collapse" />)
expect(screen.getByTestId('collapse')).toBeInTheDocument()
})
it('Should forward the ref to the root element', () => {
const ref = React.createRef<HTMLDivElement>()
render(<Collapse ref={ref}>Test</Collapse>)
expect(ref.current).toBeInTheDocument()
})
test('Should call onOpen when opened', () => {
const handleOpen = jest.fn()
const { getByTestId } = render(
<Collapse onOpen={handleOpen} data-testid="collapse" />
)
fireEvent.focus(getByTestId('collapse'))
expect(handleOpen).toHaveBeenCalled()
})
test('Should call onClose when closed', () => {
const handleClose = jest.fn()
const { getByTestId } = render(
<Collapse onClose={handleClose} data-testid="collapse" />
)
fireEvent.blur(getByTestId('collapse'))
expect(handleClose).toHaveBeenCalled()
})
test('Should call onToggle when checkbox is changed', () => {
const handleToggle = jest.fn()
render(<Collapse checkbox onToggle={handleToggle} data-testid="collapse" />)
const checkboxInput = screen.getByRole('checkbox')
fireEvent.click(checkboxInput)
expect(handleToggle).toHaveBeenCalled()
})
test('Should render CollapseTitle subcomponent', () => {
render(<Collapse.Title>Title Content</Collapse.Title>)
const titleElement = screen.getByText('Title Content')
expect(titleElement).toBeInTheDocument()
})
test('Should render CollapseContent subcomponent', () => {
render(<Collapse.Content>Test Content</Collapse.Content>)
const contentElement = screen.getByText('Test Content')
expect(contentElement).toBeInTheDocument()
})
test('Should be closed by default without defaultOpen prop', () => {
render(<Collapse checkbox data-testid="collapse" />)
const checkboxInput = screen.getByRole('checkbox')
expect(checkboxInput).not.toBeChecked()
})
test('Should be open by default with defaultOpen prop', () => {
render(<Collapse checkbox defaultOpen data-testid="collapse" />)
const checkboxInput = screen.getByRole('checkbox')
expect(checkboxInput).toBeChecked()
})
test('Should respect open prop over defaultOpen', () => {
render(<Collapse checkbox defaultOpen open={false} data-testid="collapse" />)
const checkboxInput = screen.getByRole('checkbox')
expect(checkboxInput).not.toBeChecked()
})
})