UNPKG

@virtuous/react-conductor

Version:
91 lines (75 loc) 3.6 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 _Router = _interopRequireDefault(require("../Router")); var _ = _interopRequireDefault(require(".")); 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 spy = jest.spyOn(_conductor.router, 'update'); var useRoute1 = null; var useRoute2 = null; /** * @returns {null} */ function MyComponent(_ref) { var _ref$id = _ref.id, id = _ref$id === void 0 ? null : _ref$id; useRoute1 = (0, _["default"])(); useRoute2 = (0, _["default"])(id); return null; } describe('useRoute()', function () { beforeAll(function () { _conductor.router.register('/test'); }); beforeEach(function () { useRoute1 = null; useRoute2 = null; }); it('should use the current route or the given route id', /*#__PURE__*/ _asyncToGenerator( /*#__PURE__*/ _regenerator["default"].mark(function _callee() { var _stack$getByIndex, id, newState; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _stack$getByIndex = _conductor.stack.getByIndex(_conductor.router.routeIndex), id = _stack$getByIndex.id; (0, _reactTestingLibrary.render)(_react["default"].createElement(_Router["default"], null, _react["default"].createElement(MyComponent, { id: id }))); expect(useRoute1.id).toEqual(_conductor.stack.getByIndex(_conductor.router.routeIndex).id); expect(useRoute2.id).toEqual(_conductor.stack.getByIndex(_conductor.router.routeIndex).id); _context.next = 6; return _conductor.router.push({ pathname: '/test' }); case 6: expect(useRoute1.id).toEqual(_conductor.stack.getByIndex(_conductor.router.routeIndex).id); // Ensure that the used context id was updated when a new route was pushed. expect(useRoute2.id).toEqual(_conductor.stack.get(id).id); newState = { hi: 5 }; useRoute1.update(newState); useRoute2.update(newState); expect(spy).toHaveBeenCalledWith(useRoute1.id, newState); expect(spy).toHaveBeenCalledWith(useRoute2.id, newState); case 13: case "end": return _context.stop(); } } }, _callee); }))); it('should return empty object when no matching route is found', function () { (0, _reactTestingLibrary.render)(_react["default"].createElement(_Router["default"], null, _react["default"].createElement(MyComponent, { id: 12345 }))); expect(useRoute2).toEqual({}); }); });