Blame view

天文台pc/tianwentai-ui/node_modules/react-day-picker/src/components/WeekNumber/WeekNumber.test.tsx 1.6 KB
bc518174   王天杨   提交两个项目文件
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
  import { screen } from '@testing-library/react';
  import { userEvent } from '@testing-library/user-event';
  import { DayPickerProps } from 'DayPicker';
  
  import { customRender } from 'test/render/customRender';
  
  import { WeekNumber, WeekNumberProps } from './WeekNumber';
  
  function setup(props: WeekNumberProps, dayPickerProps?: DayPickerProps) {
    return customRender(<WeekNumber {...props} />, dayPickerProps);
  }
  
  const props: WeekNumberProps = {
    number: 10,
    dates: [new Date(), new Date()]
  };
  
  describe('without "onWeekNumberClick" prop', () => {
    const dayPickerProps: DayPickerProps = { onWeekNumberClick: undefined };
    test('it should return a span element', () => {
      const { container } = setup(props, dayPickerProps);
      expect(container.firstChild).toMatchSnapshot();
    });
  });
  
  describe('with "onWeekNumberClick" prop', () => {
    const dayPickerProps: DayPickerProps = { onWeekNumberClick: jest.fn() };
    let container: HTMLElement;
    beforeEach(() => {
      container = setup(props, dayPickerProps).container;
    });
    test('it should return a button element', () => {
      expect(screen.getByRole('button')).toBeInTheDocument();
      expect(container.firstChild).toHaveAttribute('name', 'week-number');
      expect(container.firstChild).toMatchSnapshot();
    });
    describe('when the button element is clicked', () => {
      beforeEach(async () => {
        await userEvent.click(screen.getByRole('button'));
      });
      test('should call onWeekNumberClick', () => {
        expect(dayPickerProps.onWeekNumberClick).toHaveBeenCalledWith(
          props.number,
          props.dates,
          expect.anything()
        );
      });
    });
  });