/
Button.test.tsx
39 lines (32 loc) 路 1.16 KB
/
Button.test.tsx
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
import '@testing-library/jest-dom'
import '@testing-library/jest-dom/extend-expect'
import * as React from 'react'
import { render, fireEvent, screen } from '@testing-library/react'
import Button from './'
describe('Button', () => {
it('Should render button', () => {
const { getByRole } = render(<Button>test</Button>)
expect(getByRole('button')).toBeInTheDocument()
})
it('Should call onClick once per click event', () => {
const mockType = jest.fn()
const { getByRole } = render(<Button onClick={mockType}>test</Button>)
fireEvent.click(getByRole('button'))
expect(mockType).toHaveBeenCalledTimes(1)
})
it('Should not call onClick from click event if disabled', () => {
const mockType = jest.fn()
const { getByRole } = render(
<Button onClick={mockType} disabled>
test
</Button>
)
fireEvent.click(getByRole('button'))
expect(mockType).toHaveBeenCalledTimes(0)
})
it('Renders an anchor tag when an href exists', () => {
const { getByRole } = render(<Button href="/home">Home</Button>)
expect(getByRole('link')).toBeTruthy()
expect(getByRole('link')).toHaveAttribute('href', '/home')
})
})