@virtuous/react-conductor
Version:
React bindings for Conductor
111 lines (96 loc) • 5.11 kB
JavaScript
;
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);
})));
});