unveil
Version:
A React-based Reactive Presentation Framework
87 lines (65 loc) • 7.76 kB
JavaScript
;
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 _history = require('history');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
jest.dontMock('../../getDirections');
jest.dontMock('../KeyControls');
jest.dontMock('../Navigator');
jest.dontMock('../Presenter');
jest.dontMock('../Router');
jest.dontMock('../Slide');
jest.dontMock('../UIControls');
jest.dontMock('../UnveilApp');
var createHistory = function createHistory(opts) {
return (0, _history.useQueries)(_history.createHashHistory)(opts);
};
var UnveilApp = require('../UnveilApp').default;
var UIControls = require('../UIControls').default;
var KeyControls = require('../KeyControls').default;
var fixture = require('./fixtures/TreeWithoutNestedFirstSlide').default;
var mapFixture = require('./fixtures/MapWithoutNestedFirstSlide').default;
var renderFixture = function renderFixture(options) {
return _reactAddonsTestUtils2.default.renderIntoDocument(fixture(options));
};
describe('UnveilApp', function () {
var history = undefined,
elements = undefined,
node = undefined,
controls = undefined;
var checkContentEquals = function checkContentEquals(content) {
node = _reactDom2.default.findDOMNode(elements.refs['current-slide']);
expect(node.textContent).toEqual(content);
};
beforeEach(function () {
history = createHistory({ queryKey: false });
controls = [UIControls, KeyControls];
elements = renderFixture({ history: history, controls: controls });
});
afterEach(function () {
elements.router.stop();
elements = node = null;
});
it('creates correct map', function () {
expect(elements.map).toEqual(mapFixture());
});
it('saves new states', function () {
history.push('/1');
expect(elements.routerState.indices).toEqual([1, 0]);
});
var t = function t(name, path, content) {
it(name, function () {
history.push(path);
checkContentEquals(content);
});
};
t('routes to first slide', '/', 'Luke');
t('routes by index', '/1', 'Vincent Vega');
t('routes by indices', '/1/1', 'Jules effing Winnfield');
t('routes by name', '/return-of-the-jedi/luke', 'Luke');
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9VbnZlaWxBcHAuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsS0FBSyxRQUFMLENBQWMscUJBQWQ7QUFDQSxLQUFLLFFBQUwsQ0FBYyxnQkFBZDtBQUNBLEtBQUssUUFBTCxDQUFjLGNBQWQ7QUFDQSxLQUFLLFFBQUwsQ0FBYyxjQUFkO0FBQ0EsS0FBSyxRQUFMLENBQWMsV0FBZDtBQUNBLEtBQUssUUFBTCxDQUFjLFVBQWQ7QUFDQSxLQUFLLFFBQUwsQ0FBYyxlQUFkO0FBQ0EsS0FBSyxRQUFMLENBQWMsY0FBZDs7QUFPQSxJQUFNLGdCQUFnQixTQUFoQixhQUFnQixDQUFDLElBQUQ7U0FBVyxxREFBOEIsSUFBOUI7Q0FBWDs7QUFFdEIsSUFBTSxZQUFZLFFBQVEsY0FBUixFQUF3QixPQUF4Qjs7QUFFbEIsSUFBTSxhQUFjLFFBQVEsZUFBUixFQUF5QixPQUF6QjtBQUNwQixJQUFNLGNBQWMsUUFBUSxnQkFBUixFQUEwQixPQUExQjs7QUFFcEIsSUFBTSxVQUFhLFFBQVEsd0NBQVIsRUFBa0QsT0FBbEQ7QUFDbkIsSUFBTSxhQUFhLFFBQVEsdUNBQVIsRUFBaUQsT0FBakQ7O0FBRW5CLElBQUksZ0JBQWdCLFNBQWhCLGFBQWdCLENBQUMsT0FBRDtTQUFhLCtCQUFVLGtCQUFWLENBQThCLFFBQVEsT0FBUixDQUE5QjtDQUFiOztBQUVwQixTQUFTLFdBQVQsRUFBc0IsWUFBTTtBQUMxQixNQUFJLG1CQUFKO01BQWEsb0JBQWI7TUFBdUIsZ0JBQXZCO01BQTZCLG9CQUE3QixDQUQwQjs7QUFHMUIsTUFBSSxxQkFBcUIsU0FBckIsa0JBQXFCLENBQUMsT0FBRCxFQUFhO0FBQ3BDLFdBQU8sbUJBQVMsV0FBVCxDQUFxQixTQUFTLElBQVQsQ0FBYyxlQUFkLENBQXJCLENBQVAsQ0FEb0M7QUFFcEMsV0FBTyxLQUFLLFdBQUwsQ0FBUCxDQUF5QixPQUF6QixDQUFpQyxPQUFqQyxFQUZvQztHQUFiLENBSEM7O0FBUTFCLGFBQVksWUFBTTtBQUNoQixjQUFVLGNBQWMsRUFBRSxVQUFVLEtBQVYsRUFBaEIsQ0FBVixDQURnQjtBQUVoQixlQUFXLENBQUMsVUFBRCxFQUFhLFdBQWIsQ0FBWCxDQUZnQjtBQUdoQixlQUFXLGNBQWMsRUFBRSxnQkFBRixFQUFXLGtCQUFYLEVBQWQsQ0FBWCxDQUhnQjtHQUFOLENBQVosQ0FSMEI7O0FBYzFCLFlBQVcsWUFBTTtBQUNmLGFBQVMsTUFBVCxDQUFnQixJQUFoQixHQURlO0FBRWYsZUFBVyxPQUFPLElBQVAsQ0FGSTtHQUFOLENBQVgsQ0FkMEI7O0FBbUIxQixLQUFHLHFCQUFILEVBQTBCLFlBQU07QUFDOUIsV0FBTyxTQUFTLEdBQVQsQ0FBUCxDQUFxQixPQUFyQixDQUE2QixZQUE3QixFQUQ4QjtHQUFOLENBQTFCLENBbkIwQjs7QUF1QjFCLEtBQUcsa0JBQUgsRUFBdUIsWUFBTTtBQUMzQixZQUFRLElBQVIsQ0FBYSxJQUFiLEVBRDJCO0FBRTNCLFdBQU8sU0FBUyxXQUFULENBQXFCLE9BQXJCLENBQVAsQ0FBcUMsT0FBckMsQ0FBNkMsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUE3QyxFQUYyQjtHQUFOLENBQXZCLENBdkIwQjs7QUE0QjFCLE1BQUksSUFBSSxTQUFKLENBQUksQ0FBQyxJQUFELEVBQU8sSUFBUCxFQUFhLE9BQWIsRUFBeUI7QUFDL0IsT0FBRyxJQUFILEVBQVMsWUFBTTtBQUNiLGNBQVEsSUFBUixDQUFhLElBQWIsRUFEYTtBQUViLHlCQUFtQixPQUFuQixFQUZhO0tBQU4sQ0FBVCxDQUQrQjtHQUF6QixDQTVCa0I7O0FBbUMxQixJQUFFLHVCQUFGLEVBQTJCLEdBQTNCLEVBQWdDLE1BQWhDLEVBbkMwQjtBQW9DMUIsSUFBRSxpQkFBRixFQUEyQixJQUEzQixFQUFpQyxjQUFqQyxFQXBDMEI7QUFxQzFCLElBQUUsbUJBQUYsRUFBMkIsTUFBM0IsRUFBbUMsd0JBQW5DLEVBckMwQjtBQXNDMUIsSUFBRSxnQkFBRixFQUEyQiwwQkFBM0IsRUFBdUQsTUFBdkQsRUF0QzBCO0NBQU4sQ0FBdEIiLCJmaWxlIjoiVW52ZWlsQXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiamVzdC5kb250TW9jaygnLi4vLi4vZ2V0RGlyZWN0aW9ucycpO1xuamVzdC5kb250TW9jaygnLi4vS2V5Q29udHJvbHMnKTtcbmplc3QuZG9udE1vY2soJy4uL05hdmlnYXRvcicpO1xuamVzdC5kb250TW9jaygnLi4vUHJlc2VudGVyJyk7XG5qZXN0LmRvbnRNb2NrKCcuLi9Sb3V0ZXInKTtcbmplc3QuZG9udE1vY2soJy4uL1NsaWRlJyk7XG5qZXN0LmRvbnRNb2NrKCcuLi9VSUNvbnRyb2xzJyk7XG5qZXN0LmRvbnRNb2NrKCcuLi9VbnZlaWxBcHAnKTtcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFRlc3RVdGlscyBmcm9tICdyZWFjdC1hZGRvbnMtdGVzdC11dGlscyc7XG5cbmltcG9ydCB7IHVzZVF1ZXJpZXMsIGNyZWF0ZUhhc2hIaXN0b3J5IH0gZnJvbSAnaGlzdG9yeSc7XG5jb25zdCBjcmVhdGVIaXN0b3J5ID0gKG9wdHMpID0+ICh1c2VRdWVyaWVzKGNyZWF0ZUhhc2hIaXN0b3J5KShvcHRzKSk7XG5cbmNvbnN0IFVudmVpbEFwcCA9IHJlcXVpcmUoJy4uL1VudmVpbEFwcCcpLmRlZmF1bHQ7XG5cbmNvbnN0IFVJQ29udHJvbHMgID0gcmVxdWlyZSgnLi4vVUlDb250cm9scycpLmRlZmF1bHQ7XG5jb25zdCBLZXlDb250cm9scyA9IHJlcXVpcmUoJy4uL0tleUNvbnRyb2xzJykuZGVmYXVsdDtcblxuY29uc3QgZml4dHVyZSAgICA9IHJlcXVpcmUoJy4vZml4dHVyZXMvVHJlZVdpdGhvdXROZXN0ZWRGaXJzdFNsaWRlJykuZGVmYXVsdDtcbmNvbnN0IG1hcEZpeHR1cmUgPSByZXF1aXJlKCcuL2ZpeHR1cmVzL01hcFdpdGhvdXROZXN0ZWRGaXJzdFNsaWRlJykuZGVmYXVsdDtcblxubGV0IHJlbmRlckZpeHR1cmUgPSAob3B0aW9ucykgPT4gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggZml4dHVyZShvcHRpb25zKSApO1xuXG5kZXNjcmliZSgnVW52ZWlsQXBwJywgKCkgPT4ge1xuICBsZXQgaGlzdG9yeSwgZWxlbWVudHMsIG5vZGUsIGNvbnRyb2xzO1xuXG4gIGxldCBjaGVja0NvbnRlbnRFcXVhbHMgPSAoY29udGVudCkgPT4ge1xuICAgIG5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZShlbGVtZW50cy5yZWZzWydjdXJyZW50LXNsaWRlJ10pO1xuICAgIGV4cGVjdChub2RlLnRleHRDb250ZW50KS50b0VxdWFsKGNvbnRlbnQpO1xuICB9O1xuXG4gIGJlZm9yZUVhY2goICgpID0+IHtcbiAgICBoaXN0b3J5ID0gY3JlYXRlSGlzdG9yeSh7IHF1ZXJ5S2V5OiBmYWxzZSB9KTtcbiAgICBjb250cm9scyA9IFtVSUNvbnRyb2xzLCBLZXlDb250cm9sc107XG4gICAgZWxlbWVudHMgPSByZW5kZXJGaXh0dXJlKHsgaGlzdG9yeSwgY29udHJvbHMgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCggKCkgPT4ge1xuICAgIGVsZW1lbnRzLnJvdXRlci5zdG9wKCk7XG4gICAgZWxlbWVudHMgPSBub2RlID0gbnVsbDtcbiAgfSk7XG5cbiAgaXQoJ2NyZWF0ZXMgY29ycmVjdCBtYXAnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGVsZW1lbnRzLm1hcCkudG9FcXVhbChtYXBGaXh0dXJlKCkpO1xuICB9KTtcblxuICBpdCgnc2F2ZXMgbmV3IHN0YXRlcycsICgpID0+IHtcbiAgICBoaXN0b3J5LnB1c2goJy8xJyk7XG4gICAgZXhwZWN0KGVsZW1lbnRzLnJvdXRlclN0YXRlLmluZGljZXMpLnRvRXF1YWwoWzEsIDBdKTtcbiAgfSk7XG5cbiAgbGV0IHQgPSAobmFtZSwgcGF0aCwgY29udGVudCkgPT4ge1xuICAgIGl0KG5hbWUsICgpID0+IHtcbiAgICAgIGhpc3RvcnkucHVzaChwYXRoKTtcbiAgICAgIGNoZWNrQ29udGVudEVxdWFscyhjb250ZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHQoJ3JvdXRlcyB0byBmaXJzdCBzbGlkZScsICcvJywgJ0x1a2UnKTtcbiAgdCgncm91dGVzIGJ5IGluZGV4JywgICAgICAgJy8xJywgJ1ZpbmNlbnQgVmVnYScpO1xuICB0KCdyb3V0ZXMgYnkgaW5kaWNlcycsICAgICAnLzEvMScsICdKdWxlcyBlZmZpbmcgV2lubmZpZWxkJyk7XG4gIHQoJ3JvdXRlcyBieSBuYW1lJywgICAgICAgICcvcmV0dXJuLW9mLXRoZS1qZWRpL2x1a2UnLCAnTHVrZScpO1xufSk7XG4iXX0=