UNPKG

zarm

Version:

基于 React 的移动端UI库

244 lines (229 loc) 9.14 kB
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _regeneratorRuntime from "@babel/runtime/regenerator"; import { fireEvent, getByText, render, waitFor } from '@testing-library/react'; import React from 'react'; import { date7 } from '../../../tests/testData/date'; import ConfigProvider from '../../config-provider'; import enUS from '../../config-provider/locale/en_US'; import Calendar from '../index'; var originalOffsetTop = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'offsetTop'); describe('Calendar', function () { it('render horizontal', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { var onChangeFn, _render, container; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: onChangeFn = jest.fn(); _render = render( /*#__PURE__*/React.createElement(Calendar, { min: date7, mode: "single", onChange: onChangeFn, direction: "horizontal", header: true })), container = _render.container; expect(container).toMatchSnapshot(); case 3: case "end": return _context.stop(); } } }, _callee); }))); it('render local EN', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() { var onChangeFn, _render2, container; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: onChangeFn = jest.fn(); _render2 = render( /*#__PURE__*/React.createElement(ConfigProvider, { locale: enUS }, /*#__PURE__*/React.createElement(Calendar, { min: date7, mode: "single", onChange: onChangeFn }))), container = _render2.container; expect(container).toMatchSnapshot(); case 3: case "end": return _context2.stop(); } } }, _callee2); }))); // const originalWarn = console.warn; // // @ts-ignore // // eslint-disable-next-line no-return-assign // afterEach(() => (console.warn = originalWarn)); // const consoleOutput: any = []; // const mockedWarn = (output) => { // consoleOutput.push(output); // }; // // eslint-disable-next-line no-return-assign // beforeEach(() => (console.warn = mockedWarn)); // it('coustom render days warning', async () => { // const onChangeFn = jest.fn(); // render( // <Calendar // min={date7} // mode="single" // onChange={onChangeFn} // dateRender={(date: Date) => { // if (/(0|6)/.test(date.getDay().toString())) { // return {}; // } // return date.getDate(); // }} // />, // ); // await waitFor(() => { // expect(consoleOutput.length).toBeGreaterThan(1); // }); // }); // it('render horizontal trigger onChange when picker view', async () => { // const onChangeFn = jest.fn(); // const { container } = render(<Calendar // mode="single" // onChange={onChangeFn} // direction="horizontal" // header // defaultValue={new Date('2022-12-01')} // />); // const title = container.getElementsByClassName('za-calendar__title')[0]; // fireEvent.click(title); // const pickerView = container.getElementsByClassName('za-picker-view'); // expect(pickerView.length).toEqual(1); // const wheelEl = container.getElementsByClassName('za-wheel')[0]; // // fireEvent.mouseDown(wheelEl, { pointerId: 1, clientY: 0, buttons: 1 }); // // fireEvent.mouseMove(wheelEl, { pointerId: 1, clientY: 400, buttons: 1 }); // // fireEvent.mouseUp(wheelEl, { pointerId: 1, clientY: 600}); // await waitFor(() => { // console.log( container.getElementsByClassName('za-wheel')[1]) // const newTitle = container.getElementsByClassName('za-calendar__title')[0]; // expect(newTitle.textContent).toEqual('2023年1月'); // }); // }); it('render horizontal trigger onChange when action btn click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { var onChangeFn, _render3, container, btn, title, newTitle; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: onChangeFn = jest.fn(); _render3 = render( /*#__PURE__*/React.createElement(Calendar, { mode: "single", onChange: onChangeFn, direction: "horizontal", header: true, min: new Date('2022-11-01'), defaultValue: new Date('2022-12-01') })), container = _render3.container; btn = container.getElementsByClassName('za-calendar__action-btn'); fireEvent.click(btn[0]); title = container.getElementsByClassName('za-calendar__title')[0]; expect(title.textContent).toEqual('2022年11月'); fireEvent.click(btn[1]); fireEvent.click(btn[1]); newTitle = container.getElementsByClassName('za-calendar__title')[0]; expect(newTitle.textContent).toEqual('2023年1月'); case 10: case "end": return _context3.stop(); } } }, _callee3); }))); it('should trigger onChange when single click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() { var onChangeFn, _render4, container, day2; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: onChangeFn = jest.fn(); _render4 = render( /*#__PURE__*/React.createElement(Calendar, { min: date7, mode: "single", onChange: onChangeFn })), container = _render4.container; day2 = [].slice.call(container.getElementsByClassName('za-calendar__day'))[15]; expect(getByText(day2, '16')).toBeTruthy(); fireEvent.click(day2); expect(onChangeFn).toBeCalled(); case 6: case "end": return _context4.stop(); } } }, _callee4); }))); it('should trigger onChange when double click', function () { var onChangeFn = jest.fn(); var _render5 = render( /*#__PURE__*/React.createElement(Calendar, { mode: "range", min: new Date('2022-01-01'), max: new Date('2022-01-28'), onChange: onChangeFn })), container = _render5.container; var days = [].slice.call(container.getElementsByClassName('za-calendar__day')); fireEvent.click(days[27]); fireEvent.click(days[16]); expect(onChangeFn).toBeCalled(); }); it('should trigger onChange when multiple click', function () { var onChangeFn = jest.fn(); var _render6 = render( /*#__PURE__*/React.createElement(Calendar, { mode: "multiple", min: new Date('2022-01-01'), max: new Date('2022-01-28'), value: [new Date('2022-01-02')], onChange: onChangeFn })), container = _render6.container; var days = [].slice.call(container.getElementsByClassName('za-calendar__day')); fireEvent.click(days[2]); fireEvent.click(days[16]); fireEvent.click(days[16]); expect(onChangeFn).toBeCalledTimes(3); }); beforeEach(function () { Object.defineProperty(HTMLElement.prototype, 'offsetTop', { configurable: true, value: 500 }); }); afterAll(function () { Object.defineProperty(HTMLElement.prototype, 'offsetTop', originalOffsetTop); }); it('body scroll', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() { var onChangeFn, _render7, container, body; return _regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: onChangeFn = jest.fn(); _render7 = render( /*#__PURE__*/React.createElement(Calendar, { mode: "multiple", min: new Date('2022-01-01'), max: new Date('2022-10-28'), onChange: onChangeFn })), container = _render7.container; body = container.getElementsByClassName('za-calendar__body'); fireEvent.scroll(body[0], { target: { scrollTop: 200 } }); _context5.next = 6; return waitFor(function () { var newTitle = container.getElementsByClassName('za-calendar__scroll-month')[0]; expect(newTitle.textContent).toEqual('2022年1月'); }); case 6: case "end": return _context5.stop(); } } }, _callee5); }))); });