UNPKG

@virtuous/react-conductor

Version:
111 lines (96 loc) 5.11 kB
"use strict"; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _react = _interopRequireDefault(require("react")); var _reactTestingLibrary = require("react-testing-library"); var _conductor = require("@virtuous/conductor"); var _index = _interopRequireDefault(require("./index")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var _useRouter = (0, _index["default"])(), push = _useRouter.push, pop = _useRouter.pop, replace = _useRouter.replace, reset = _useRouter.reset, resetTo = _useRouter.resetTo, willPush = _useRouter.willPush, didPush = _useRouter.didPush, willPop = _useRouter.willPop, didPop = _useRouter.didPop, willReplace = _useRouter.willReplace, didReplace = _useRouter.didReplace, willReset = _useRouter.willReset, didReset = _useRouter.didReset; var params = { pathname: '123', state: { something: true } }; var spyPush = jest.spyOn(_conductor.router, 'push'); var spyPop = jest.spyOn(_conductor.router, 'pop'); var spyReplace = jest.spyOn(_conductor.router, 'replace'); var spyReset = jest.spyOn(_conductor.router, 'reset'); var spyResetTo = jest.spyOn(_conductor.router, 'resetTo'); describe('useRouter()', function () { it('should provide router functions', function () { push(params); pop(params); replace(params); reset(); reset(params.state); resetTo(params); expect(spyPush).toHaveBeenCalledWith(params); expect(spyPop).toHaveBeenCalledWith(params); expect(spyReplace).toHaveBeenCalledWith(params); expect(spyReset).toHaveBeenNthCalledWith(1, null); expect(spyReset).toHaveBeenNthCalledWith(2, params.state); expect(spyResetTo).toHaveBeenCalledWith(params.pathname, params.state); }); it('should register and de-register events', /*#__PURE__*/ _asyncToGenerator( /*#__PURE__*/ _regenerator["default"].mark(function _callee() { var MyComponent; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: MyComponent = function _ref2() { willPush(function () {}); didPush(function () {}); willPop(function () {}); didPop(function () {}); willReplace(function () {}); didReplace(function () {}); willReset(function () {}); didReset(function () {}); return _react["default"].createElement("div", null); }; (0, _reactTestingLibrary.render)(_react["default"].createElement(MyComponent, null)); // Make sure that the listeners are setup. expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_PUSH)).toBe(1); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_PUSH)).toBe(1); expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_POP)).toBe(1); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_POP)).toBe(1); expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_REPLACE)).toBe(1); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_REPLACE)).toBe(1); expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_RESET)).toBe(1); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_RESET)).toBe(1); // Unmount everything to trigger useEffect cleanup. (0, _reactTestingLibrary.cleanup)(); // Make sure that the listeners were reset. expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_PUSH)).toBe(0); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_PUSH)).toBe(0); expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_POP)).toBe(0); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_POP)).toBe(0); expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_REPLACE)).toBe(0); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_REPLACE)).toBe(0); expect(_conductor.emitter.listenerCount(_conductor.EVENT_WILL_RESET)).toBe(0); expect(_conductor.emitter.listenerCount(_conductor.EVENT_DID_RESET)).toBe(0); case 19: case "end": return _context.stop(); } } }, _callee); }))); });