UNPKG

unveil

Version:

A React-based Reactive Presentation Framework

75 lines (55 loc) 5.98 kB
'use strict'; var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _reactAddonsTestUtils = require('react-addons-test-utils'); var _reactAddonsTestUtils2 = _interopRequireDefault(_reactAddonsTestUtils); var _rxjs = require('rxjs'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } jest.dontMock('../KeyControls'); jest.dontMock('../Navigator'); jest.dontMock('marked'); var createNavigator = require('../Navigator').default; var KeyControls = require('../KeyControls').default; describe('KeyControls', function () { var controls = undefined, node = undefined, navigator = undefined, stateSubject = undefined, mappings = undefined; mappings = { 'left': 37, 'up': 38, 'right': 39, 'down': 40 }; beforeEach(function () { stateSubject = new _rxjs.Subject(); navigator = createNavigator({ stateObservable: stateSubject }); stateSubject.next({ direction: [] }); navigator.next = jest.genMockFunction(); controls = _reactAddonsTestUtils2.default.renderIntoDocument(_react2.default.createElement(KeyControls, { navigator: navigator })); node = _reactDom2.default.findDOMNode(controls); }); var simulateKeyUp = function simulateKeyUp(key) { var event = new KeyboardEvent('keyup', { 'keyCode': key }); document.dispatchEvent(event); }; (0, _keys2.default)(mappings).forEach(function (direction) { var key = mappings[direction]; it('calls navigate(' + direction + ') when pressing ' + direction + '-arrow-key (' + key + ')', function () { simulateKeyUp(key); expect(navigator.next).toBeCalledWith(direction); }); }); it('does not react to non-mapped keyUps', function () { simulateKeyUp(65); expect(navigator.next).not.toBeCalled(); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9LZXlDb250cm9scy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsS0FBSyxRQUFMLENBQWMsZ0JBQWQ7QUFDQSxLQUFLLFFBQUwsQ0FBYyxjQUFkO0FBQ0EsS0FBSyxRQUFMLENBQWMsUUFBZDs7QUFPQSxJQUFNLGtCQUFrQixRQUFRLGNBQVIsRUFBd0IsT0FBeEI7QUFDeEIsSUFBTSxjQUFrQixRQUFRLGdCQUFSLEVBQTBCLE9BQTFCOztBQUV4QixTQUFTLGFBQVQsRUFBd0IsWUFBTTtBQUM1QixNQUFJLG9CQUFKO01BQWMsZ0JBQWQ7TUFBb0IscUJBQXBCO01BQStCLHdCQUEvQjtNQUE2QyxvQkFBN0MsQ0FENEI7O0FBRzVCLGFBQVc7QUFDVCxZQUFTLEVBQVQ7QUFDQSxVQUFTLEVBQVQ7QUFDQSxhQUFTLEVBQVQ7QUFDQSxZQUFTLEVBQVQ7R0FKRixDQUg0Qjs7QUFVNUIsYUFBWSxZQUFNO0FBQ2hCLG1CQUFlLG1CQUFmLENBRGdCO0FBRWhCLGdCQUFZLGdCQUFnQixFQUFDLGlCQUFpQixZQUFqQixFQUFqQixDQUFaLENBRmdCO0FBR2hCLGlCQUFhLElBQWIsQ0FBa0IsRUFBRSxXQUFXLEVBQVgsRUFBcEIsRUFIZ0I7QUFJaEIsY0FBVSxJQUFWLEdBQWlCLEtBQUssZUFBTCxFQUFqQixDQUpnQjs7QUFNaEIsZUFBVywrQkFBVSxrQkFBVixDQUNULDhCQUFDLFdBQUQ7QUFDRSxpQkFBVyxTQUFYO0tBREYsQ0FEUyxDQUFYLENBTmdCOztBQVloQixXQUFPLG1CQUFTLFdBQVQsQ0FBcUIsUUFBckIsQ0FBUCxDQVpnQjtHQUFOLENBQVosQ0FWNEI7O0FBeUI1QixNQUFJLGdCQUFnQixTQUFoQixhQUFnQixDQUFDLEdBQUQsRUFBUztBQUMzQixRQUFJLFFBQVEsSUFBSSxhQUFKLENBQWtCLE9BQWxCLEVBQTJCLEVBQUMsV0FBVyxHQUFYLEVBQTVCLENBQVIsQ0FEdUI7QUFFM0IsYUFBUyxhQUFULENBQXVCLEtBQXZCLEVBRjJCO0dBQVQsQ0F6QlE7O0FBOEI1QixzQkFBWSxRQUFaLEVBQXNCLE9BQXRCLENBQStCLFVBQUMsU0FBRCxFQUFlO0FBQzVDLFFBQUksTUFBTSxTQUFTLFNBQVQsQ0FBTixDQUR3QztBQUU1QywyQkFBcUIsaUNBQTRCLDZCQUF3QixTQUF6RSxFQUFpRixZQUFNO0FBQ3JGLG9CQUFjLEdBQWQsRUFEcUY7QUFFckYsYUFBTyxVQUFVLElBQVYsQ0FBUCxDQUF1QixjQUF2QixDQUFzQyxTQUF0QyxFQUZxRjtLQUFOLENBQWpGLENBRjRDO0dBQWYsQ0FBL0IsQ0E5QjRCOztBQXNDNUIsNENBQTBDLFlBQU07QUFDOUMsa0JBQWMsRUFBZCxFQUQ4QztBQUU5QyxXQUFPLFVBQVUsSUFBVixDQUFQLENBQXVCLEdBQXZCLENBQTJCLFVBQTNCLEdBRjhDO0dBQU4sQ0FBMUMsQ0F0QzRCO0NBQU4sQ0FBeEIiLCJmaWxlIjoiS2V5Q29udHJvbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJqZXN0LmRvbnRNb2NrKCcuLi9LZXlDb250cm9scycpO1xuamVzdC5kb250TW9jaygnLi4vTmF2aWdhdG9yJyk7XG5qZXN0LmRvbnRNb2NrKCdtYXJrZWQnKTtcblxuaW1wb3J0IFJlYWN0ICAgICAgIGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSAgICBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFRlc3RVdGlscyAgIGZyb20gJ3JlYWN0LWFkZG9ucy10ZXN0LXV0aWxzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuY29uc3QgY3JlYXRlTmF2aWdhdG9yID0gcmVxdWlyZSgnLi4vTmF2aWdhdG9yJykuZGVmYXVsdDtcbmNvbnN0IEtleUNvbnRyb2xzICAgICA9IHJlcXVpcmUoJy4uL0tleUNvbnRyb2xzJykuZGVmYXVsdDtcblxuZGVzY3JpYmUoJ0tleUNvbnRyb2xzJywgKCkgPT4ge1xuICBsZXQgY29udHJvbHMsIG5vZGUsIG5hdmlnYXRvciwgc3RhdGVTdWJqZWN0LCBtYXBwaW5ncztcblxuICBtYXBwaW5ncyA9IHtcbiAgICAnbGVmdCc6ICAzNyxcbiAgICAndXAnOiAgICAzOCxcbiAgICAncmlnaHQnOiAzOSxcbiAgICAnZG93bic6ICA0MFxuICB9O1xuXG4gIGJlZm9yZUVhY2goICgpID0+IHtcbiAgICBzdGF0ZVN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xuICAgIG5hdmlnYXRvciA9IGNyZWF0ZU5hdmlnYXRvcih7c3RhdGVPYnNlcnZhYmxlOiBzdGF0ZVN1YmplY3R9KTtcbiAgICBzdGF0ZVN1YmplY3QubmV4dCh7IGRpcmVjdGlvbjogW10gfSk7XG4gICAgbmF2aWdhdG9yLm5leHQgPSBqZXN0Lmdlbk1vY2tGdW5jdGlvbigpO1xuXG4gICAgY29udHJvbHMgPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KCAoXG4gICAgICA8S2V5Q29udHJvbHNcbiAgICAgICAgbmF2aWdhdG9yPXtuYXZpZ2F0b3J9XG4gICAgICA+XG4gICAgICA8L0tleUNvbnRyb2xzPikpO1xuXG4gICAgbm9kZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKGNvbnRyb2xzKTtcbiAgfSk7XG5cbiAgbGV0IHNpbXVsYXRlS2V5VXAgPSAoa2V5KSA9PiB7XG4gICAgbGV0IGV2ZW50ID0gbmV3IEtleWJvYXJkRXZlbnQoJ2tleXVwJywgeydrZXlDb2RlJzoga2V5fSk7XG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgT2JqZWN0LmtleXMobWFwcGluZ3MpLmZvckVhY2goIChkaXJlY3Rpb24pID0+IHtcbiAgICBsZXQga2V5ID0gbWFwcGluZ3NbZGlyZWN0aW9uXTtcbiAgICBpdChgY2FsbHMgbmF2aWdhdGUoJHtkaXJlY3Rpb259KSB3aGVuIHByZXNzaW5nICR7ZGlyZWN0aW9ufS1hcnJvdy1rZXkgKCR7a2V5fSlgLCAoKSA9PiB7XG4gICAgICBzaW11bGF0ZUtleVVwKGtleSk7XG4gICAgICBleHBlY3QobmF2aWdhdG9yLm5leHQpLnRvQmVDYWxsZWRXaXRoKGRpcmVjdGlvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KGBkb2VzIG5vdCByZWFjdCB0byBub24tbWFwcGVkIGtleVVwc2AsICgpID0+IHtcbiAgICBzaW11bGF0ZUtleVVwKDY1KTtcbiAgICBleHBlY3QobmF2aWdhdG9yLm5leHQpLm5vdC50b0JlQ2FsbGVkKCk7XG4gIH0pO1xuXG59KTtcbiJdfQ==