button.test.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* eslint-disable import/no-extraneous-dependencies */
  2. /* eslint-disable no-undef */
  3. import React from 'react';
  4. import { render, cleanup, fireEvent } from '@testing-library/react';
  5. import Button from '../components/Button';
  6. import { color } from '../constants/style';
  7. describe('Button component', () => {
  8. afterEach(cleanup);
  9. test('check button content', () => {
  10. const { getByText } = render(<Button>btn content</Button>);
  11. expect(getByText('btn content').textContent).toBe('btn content');
  12. });
  13. test('check button theme', () => {
  14. const { container } = render(<Button appearance="primary">btn content</Button>);
  15. const btn = container.querySelector('button');
  16. const style = window.getComputedStyle(btn as HTMLElement) as { [key: string]: any };
  17. expect(style['border-color']).toBe(color.primary);
  18. expect(style['background-color']).toBe('rgb(88, 106, 242)');
  19. expect(style.color).toBe('white');
  20. });
  21. test('click button', () => {
  22. let counter = 0;
  23. const cb = (): void => { counter += 1; };
  24. const { getByText } = render(<Button onClick={cb}>btn content</Button>);
  25. fireEvent.click(getByText('btn content'));
  26. expect(counter).toBe(1);
  27. });
  28. test('disable button', () => {
  29. let counter = 0;
  30. const cb = (): void => { counter += 1; };
  31. const { getByText } = render(<Button isDisabled onClick={cb}>btn content</Button>);
  32. fireEvent.click(getByText('btn content'));
  33. expect(counter).toBe(0);
  34. });
  35. });