index.spec.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React from 'react'
  2. import { cleanup, fireEvent, render } from '@testing-library/react'
  3. import Button from './index'
  4. afterEach(cleanup)
  5. // https://testing-library.com/docs/queries/about
  6. describe('Button text', () => {
  7. test('Button text should be same as children', async () => {
  8. const { getByRole, container } = render(<Button>Click me</Button>)
  9. expect(getByRole('button').textContent).toBe('Click me')
  10. expect(container.querySelector('button')?.textContent).toBe('Click me')
  11. })
  12. test('Loading button text should include same as children', async () => {
  13. const { getByRole } = render(<Button loading>Click me</Button>)
  14. expect(getByRole('button').textContent?.includes('Loading')).toBe(true)
  15. })
  16. })
  17. describe('Button style', () => {
  18. test('Button should have default variant', async () => {
  19. const { getByRole } = render(<Button>Click me</Button>)
  20. expect(getByRole('button').className).toContain('btn-secondary')
  21. })
  22. test('Button should have primary variant', async () => {
  23. const { getByRole } = render(<Button variant='primary'>Click me</Button>)
  24. expect(getByRole('button').className).toContain('btn-primary')
  25. })
  26. test('Button should have warning variant', async () => {
  27. const { getByRole } = render(<Button variant='warning'>Click me</Button>)
  28. expect(getByRole('button').className).toContain('btn-warning')
  29. })
  30. test('Button disabled should have disabled variant', async () => {
  31. const { getByRole } = render(<Button disabled>Click me</Button>)
  32. expect(getByRole('button').className).toContain('btn-disabled')
  33. })
  34. })
  35. describe('Button events', () => {
  36. test('onClick should been call after clicked', async () => {
  37. const onClick = jest.fn()
  38. const { getByRole } = render(<Button onClick={onClick}>Click me</Button>)
  39. fireEvent.click(getByRole('button'))
  40. expect(onClick).toHaveBeenCalled()
  41. })
  42. })