UNPKG

zarm

Version:

基于 React 的移动端UI库

94 lines (67 loc) 2.97 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = require("@testing-library/react"); var _react2 = _interopRequireDefault(require("react")); var _ = _interopRequireDefault(require("..")); var TestDemo = function TestDemo(_ref) { var onClickAway = _ref.onClickAway, rest = (0, _objectWithoutProperties2.default)(_ref, ["onClickAway"]); var ref = /*#__PURE__*/_react2.default.createRef(); (0, _.default)(ref, onClickAway); return /*#__PURE__*/_react2.default.createElement("div", rest, /*#__PURE__*/_react2.default.createElement("div", { title: "child1", ref: ref }), /*#__PURE__*/_react2.default.createElement("div", { title: "child2" })); }; var TestDemo2 = function TestDemo2(_ref2) { var onClickAway = _ref2.onClickAway, rest = (0, _objectWithoutProperties2.default)(_ref2, ["onClickAway"]); var ref = /*#__PURE__*/_react2.default.createRef(); var ref1 = /*#__PURE__*/_react2.default.createRef(); (0, _.default)([ref, ref1], onClickAway); return /*#__PURE__*/_react2.default.createElement("div", rest, /*#__PURE__*/_react2.default.createElement("div", { title: "child1", ref: ref }), /*#__PURE__*/_react2.default.createElement("div", { title: "child2", ref: ref1 }), /*#__PURE__*/_react2.default.createElement("div", { title: "child3" })); }; var title = 'useClickAway'; describe('useClickAway', function () { test('useClickAway with one target', function () { var fn = jest.fn(); (0, _react.render)( /*#__PURE__*/_react2.default.createElement(TestDemo, { title: title, onClickAway: fn })); expect(fn).toBeCalledTimes(0); // trigger click away once _react.fireEvent.click(_react.screen.getByTitle('child2')); expect(fn).toBeCalledTimes(1); // trigger click away twice _react.fireEvent.click(_react.screen.getByTitle('child2')); expect(fn).toBeCalledTimes(2); // trigger click away three times _react.fireEvent.click(_react.screen.getByTitle('child2')); expect(fn).toBeCalledTimes(3); }); test('useClickAway with more targets', function () { var fn = jest.fn(); (0, _react.render)( /*#__PURE__*/_react2.default.createElement(TestDemo2, { title: title, onClickAway: fn })); expect(fn).toBeCalledTimes(0); // trigger click in targets _react.fireEvent.click(_react.screen.getByTitle('child1')); expect(fn).toBeCalledTimes(0); // trigger click in targets _react.fireEvent.click(_react.screen.getByTitle('child2')); expect(fn).toBeCalledTimes(0); // trigger click away _react.fireEvent.click(_react.screen.getByTitle('child3')); expect(fn).toBeCalledTimes(1); // trigger click away _react.fireEvent.click(_react.screen.getByTitle('child3')); expect(fn).toBeCalledTimes(2); }); });