UNPKG

unveil

Version:

A React-based Reactive Presentation Framework

87 lines (73 loc) 9.21 kB
'use strict'; var _rxjs = require('rxjs'); jest.dontMock('../Navigator'); var createNavigator = require('../Navigator').default; var possibleMoves = [{ next: [0], previous: [2] }, { next: false, previous: [1, 1] }]; var motions = ['left', 'right', 'up', 'down']; describe('Navigator', function () { var navigator = undefined, stateSubject = undefined; beforeEach(function () { stateSubject = new _rxjs.Subject(); var stateObservable = stateSubject; navigator = createNavigator({ stateObservable: stateObservable }); }); describe('Motion Names', function () { it('returns correct motion names', function () { var names = navigator.motionNames; expect(names.length).toEqual(4); motions.forEach(function (motion) { expect(names.indexOf(motion)).not.toEqual(-1); }); }); }); describe('Possible motions', function () { var t = function t(name, possibleMotions, directions) { return it(name, function () { stateSubject.next(directions); possibleMotions.forEach(function (val, i) { expect(navigator.isPossibleMotion(motions[i])).toEqual(val); }); }); }; t('computes possible motions before setting moves', [false, false, false, false], []); t('computes possible motions after setting moves', [true, true, true, false], possibleMoves); }); describe('Go', function () { var mockSubscriber = undefined, subscription = undefined; beforeEach(function () { stateSubject.next(possibleMoves); mockSubscriber = jest.genMockFn(); subscription = navigator.asObservable().subscribe(mockSubscriber); }); afterEach(function () { if (subscription) subscription.unsubscribe(); }); var t = function t(name, next, expectation) { return it(name, function () { navigator.next(next); expectation(); }); }; t('does not go to invalid state', ['not'], function () { return expect(mockSubscriber).not.toBeCalled(); }); t('does not move diagonally', 'diagonally', function () { return expect(mockSubscriber).not.toBeCalled(); }); t('does not move down', 'down', function () { return expect(mockSubscriber).not.toBeCalled(); }); t('goes to valid state', [1], function () { return expect(mockSubscriber).toBeCalledWith([1]); }); t('goes to valid string state', [1], function () { return expect(mockSubscriber).toBeCalledWith([1]); }); t('moves up', 'up', function () { return expect(mockSubscriber).toBeCalledWith([1, 1]); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9OYXZpZ2F0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLEtBQUssUUFBTCxDQUFjLGNBQWQ7O0FBSUEsSUFBTSxrQkFBa0IsUUFBUSxjQUFSLEVBQXdCLE9BQXhCO0FBQ3hCLElBQU0sZ0JBQWdCLENBQ3BCLEVBQUMsTUFBTSxDQUFDLENBQUQsQ0FBTixFQUFXLFVBQVUsQ0FBQyxDQUFELENBQVYsRUFEUSxFQUVwQixFQUFDLE1BQU0sS0FBTixFQUFhLFVBQVUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFWLEVBRk0sQ0FBaEI7O0FBS04sSUFBTSxVQUFVLENBQUMsTUFBRCxFQUFTLE9BQVQsRUFBa0IsSUFBbEIsRUFBd0IsTUFBeEIsQ0FBVjs7QUFFTixTQUFTLFdBQVQsRUFBc0IsWUFBTTtBQUMxQixNQUFJLHFCQUFKO01BQWUsd0JBQWYsQ0FEMEI7O0FBRzFCLGFBQVksWUFBTTtBQUNoQixtQkFBZSxtQkFBZixDQURnQjtBQUVoQixRQUFJLGtCQUFrQixZQUFsQixDQUZZO0FBR2hCLGdCQUFZLGdCQUFnQixFQUFDLGdDQUFELEVBQWhCLENBQVosQ0FIZ0I7R0FBTixDQUFaLENBSDBCOztBQVMxQixXQUFTLGNBQVQsRUFBeUIsWUFBTTtBQUM3QixPQUFHLDhCQUFILEVBQW1DLFlBQU07QUFDdkMsVUFBSSxRQUFRLFVBQVUsV0FBVixDQUQyQjtBQUV2QyxhQUFPLE1BQU0sTUFBTixDQUFQLENBQXFCLE9BQXJCLENBQTZCLENBQTdCLEVBRnVDO0FBR3ZDLGNBQVEsT0FBUixDQUFnQixVQUFTLE1BQVQsRUFBaUI7QUFDL0IsZUFBTyxNQUFNLE9BQU4sQ0FBYyxNQUFkLENBQVAsRUFBOEIsR0FBOUIsQ0FBa0MsT0FBbEMsQ0FBMEMsQ0FBQyxDQUFELENBQTFDLENBRCtCO09BQWpCLENBQWhCLENBSHVDO0tBQU4sQ0FBbkMsQ0FENkI7R0FBTixDQUF6QixDQVQwQjs7QUFtQjFCLFdBQVMsa0JBQVQsRUFBNkIsWUFBTTtBQUNqQyxRQUFJLElBQUksU0FBSixDQUFJLENBQUMsSUFBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEI7YUFBdUMsR0FBRyxJQUFILEVBQVMsWUFBTTtBQUM1RCxxQkFBYSxJQUFiLENBQWtCLFVBQWxCLEVBRDREO0FBRTVELHdCQUFnQixPQUFoQixDQUF3QixVQUFDLEdBQUQsRUFBTSxDQUFOLEVBQVk7QUFDbEMsaUJBQU8sVUFBVSxnQkFBVixDQUEyQixRQUFRLENBQVIsQ0FBM0IsQ0FBUCxFQUErQyxPQUEvQyxDQUF1RCxHQUF2RCxFQURrQztTQUFaLENBQXhCLENBRjREO09BQU47S0FBaEQsQ0FEeUI7O0FBUWpDLE1BQUUsZ0RBQUYsRUFBb0QsQ0FBQyxLQUFELEVBQVEsS0FBUixFQUFlLEtBQWYsRUFBc0IsS0FBdEIsQ0FBcEQsRUFBa0YsRUFBbEYsRUFSaUM7QUFTakMsTUFBRSwrQ0FBRixFQUFtRCxDQUFDLElBQUQsRUFBTyxJQUFQLEVBQWEsSUFBYixFQUFtQixLQUFuQixDQUFuRCxFQUE4RSxhQUE5RSxFQVRpQztHQUFOLENBQTdCLENBbkIwQjs7QUErQjFCLFdBQVMsSUFBVCxFQUFlLFlBQU07QUFDbkIsUUFBSSwwQkFBSjtRQUFvQix3QkFBcEIsQ0FEbUI7O0FBR25CLGVBQVcsWUFBTTtBQUNmLG1CQUFhLElBQWIsQ0FBa0IsYUFBbEIsRUFEZTtBQUVmLHVCQUFpQixLQUFLLFNBQUwsRUFBakIsQ0FGZTtBQUdmLHFCQUFpQixVQUFVLFlBQVYsR0FBeUIsU0FBekIsQ0FBbUMsY0FBbkMsQ0FBakIsQ0FIZTtLQUFOLENBQVgsQ0FIbUI7O0FBU25CLGNBQVUsWUFBTTtBQUNkLFVBQUksWUFBSixFQUFrQixhQUFhLFdBQWIsR0FBbEI7S0FEUSxDQUFWLENBVG1COztBQWFuQixRQUFJLElBQUksU0FBSixDQUFJLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxXQUFiLEVBQTZCO0FBQ25DLGFBQU8sR0FBRyxJQUFILEVBQVMsWUFBTTtBQUNwQixrQkFBVSxJQUFWLENBQWUsSUFBZixFQURvQjtBQUVwQixzQkFGb0I7T0FBTixDQUFoQixDQURtQztLQUE3QixDQWJXOztBQW9CbkIsTUFBRSw4QkFBRixFQUFrQyxDQUFDLEtBQUQsQ0FBbEMsRUFBMkM7YUFBTSxPQUFPLGNBQVAsRUFBdUIsR0FBdkIsQ0FBMkIsVUFBM0I7S0FBTixDQUEzQyxDQXBCbUI7QUFxQm5CLE1BQUUsMEJBQUYsRUFBOEIsWUFBOUIsRUFBNEM7YUFBTSxPQUFPLGNBQVAsRUFBdUIsR0FBdkIsQ0FBMkIsVUFBM0I7S0FBTixDQUE1QyxDQXJCbUI7QUFzQm5CLE1BQUUsb0JBQUYsRUFBd0IsTUFBeEIsRUFBZ0M7YUFBTSxPQUFPLGNBQVAsRUFBdUIsR0FBdkIsQ0FBMkIsVUFBM0I7S0FBTixDQUFoQyxDQXRCbUI7QUF1Qm5CLE1BQUUscUJBQUYsRUFBeUIsQ0FBQyxDQUFELENBQXpCLEVBQThCO2FBQU0sT0FBTyxjQUFQLEVBQXVCLGNBQXZCLENBQXNDLENBQUMsQ0FBRCxDQUF0QztLQUFOLENBQTlCLENBdkJtQjtBQXdCbkIsTUFBRSw0QkFBRixFQUFnQyxDQUFDLENBQUQsQ0FBaEMsRUFBcUM7YUFBTSxPQUFPLGNBQVAsRUFBdUIsY0FBdkIsQ0FBc0MsQ0FBQyxDQUFELENBQXRDO0tBQU4sQ0FBckMsQ0F4Qm1CO0FBeUJuQixNQUFFLFVBQUYsRUFBYyxJQUFkLEVBQW9CO2FBQU0sT0FBTyxjQUFQLEVBQXVCLGNBQXZCLENBQXNDLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBdEM7S0FBTixDQUFwQixDQXpCbUI7R0FBTixDQUFmLENBL0IwQjtDQUFOLENBQXRCIiwiZmlsZSI6Ik5hdmlnYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImplc3QuZG9udE1vY2soJy4uL05hdmlnYXRvcicpO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IGNyZWF0ZU5hdmlnYXRvciA9IHJlcXVpcmUoJy4uL05hdmlnYXRvcicpLmRlZmF1bHQ7XG5jb25zdCBwb3NzaWJsZU1vdmVzID0gW1xuICB7bmV4dDogWzBdLCBwcmV2aW91czogWzJdfSxcbiAge25leHQ6IGZhbHNlLCBwcmV2aW91czogWzEsIDFdfVxuXTtcblxuY29uc3QgbW90aW9ucyA9IFsnbGVmdCcsICdyaWdodCcsICd1cCcsICdkb3duJ107XG5cbmRlc2NyaWJlKCdOYXZpZ2F0b3InLCAoKSA9PiB7XG4gIGxldCBuYXZpZ2F0b3IsIHN0YXRlU3ViamVjdDtcblxuICBiZWZvcmVFYWNoKCAoKSA9PiB7XG4gICAgc3RhdGVTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcbiAgICBsZXQgc3RhdGVPYnNlcnZhYmxlID0gc3RhdGVTdWJqZWN0O1xuICAgIG5hdmlnYXRvciA9IGNyZWF0ZU5hdmlnYXRvcih7c3RhdGVPYnNlcnZhYmxlfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdNb3Rpb24gTmFtZXMnLCAoKSA9PiB7XG4gICAgaXQoJ3JldHVybnMgY29ycmVjdCBtb3Rpb24gbmFtZXMnLCAoKSA9PiB7XG4gICAgICBsZXQgbmFtZXMgPSBuYXZpZ2F0b3IubW90aW9uTmFtZXM7XG4gICAgICBleHBlY3QobmFtZXMubGVuZ3RoKS50b0VxdWFsKDQpO1xuICAgICAgbW90aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG1vdGlvbikge1xuICAgICAgICBleHBlY3QobmFtZXMuaW5kZXhPZihtb3Rpb24pKS5ub3QudG9FcXVhbCgtMSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Bvc3NpYmxlIG1vdGlvbnMnLCAoKSA9PiB7XG4gICAgbGV0IHQgPSAobmFtZSwgcG9zc2libGVNb3Rpb25zLCBkaXJlY3Rpb25zKSA9PiBpdChuYW1lLCAoKSA9PiB7XG4gICAgICBzdGF0ZVN1YmplY3QubmV4dChkaXJlY3Rpb25zKTtcbiAgICAgIHBvc3NpYmxlTW90aW9ucy5mb3JFYWNoKCh2YWwsIGkpID0+IHtcbiAgICAgICAgZXhwZWN0KG5hdmlnYXRvci5pc1Bvc3NpYmxlTW90aW9uKG1vdGlvbnNbaV0pKS50b0VxdWFsKHZhbCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHQoJ2NvbXB1dGVzIHBvc3NpYmxlIG1vdGlvbnMgYmVmb3JlIHNldHRpbmcgbW92ZXMnLCBbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLCBbXSk7XG4gICAgdCgnY29tcHV0ZXMgcG9zc2libGUgbW90aW9ucyBhZnRlciBzZXR0aW5nIG1vdmVzJywgW3RydWUsIHRydWUsIHRydWUsIGZhbHNlXSwgcG9zc2libGVNb3Zlcyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHbycsICgpID0+IHtcbiAgICBsZXQgbW9ja1N1YnNjcmliZXIsIHN1YnNjcmlwdGlvbjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgc3RhdGVTdWJqZWN0Lm5leHQocG9zc2libGVNb3Zlcyk7XG4gICAgICBtb2NrU3Vic2NyaWJlciA9IGplc3QuZ2VuTW9ja0ZuKCk7XG4gICAgICBzdWJzY3JpcHRpb24gICA9IG5hdmlnYXRvci5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUobW9ja1N1YnNjcmliZXIpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIGlmIChzdWJzY3JpcHRpb24pIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuXG4gICAgbGV0IHQgPSAobmFtZSwgbmV4dCwgZXhwZWN0YXRpb24pID0+IHtcbiAgICAgIHJldHVybiBpdChuYW1lLCAoKSA9PiB7XG4gICAgICAgIG5hdmlnYXRvci5uZXh0KG5leHQpO1xuICAgICAgICBleHBlY3RhdGlvbigpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdCgnZG9lcyBub3QgZ28gdG8gaW52YWxpZCBzdGF0ZScsIFsnbm90J10sICgpID0+IGV4cGVjdChtb2NrU3Vic2NyaWJlcikubm90LnRvQmVDYWxsZWQoKSApO1xuICAgIHQoJ2RvZXMgbm90IG1vdmUgZGlhZ29uYWxseScsICdkaWFnb25hbGx5JywgKCkgPT4gZXhwZWN0KG1vY2tTdWJzY3JpYmVyKS5ub3QudG9CZUNhbGxlZCgpICk7XG4gICAgdCgnZG9lcyBub3QgbW92ZSBkb3duJywgJ2Rvd24nLCAoKSA9PiBleHBlY3QobW9ja1N1YnNjcmliZXIpLm5vdC50b0JlQ2FsbGVkKCkgKTtcbiAgICB0KCdnb2VzIHRvIHZhbGlkIHN0YXRlJywgWzFdLCAoKSA9PiBleHBlY3QobW9ja1N1YnNjcmliZXIpLnRvQmVDYWxsZWRXaXRoKFsxXSkgKTtcbiAgICB0KCdnb2VzIHRvIHZhbGlkIHN0cmluZyBzdGF0ZScsIFsxXSwgKCkgPT4gZXhwZWN0KG1vY2tTdWJzY3JpYmVyKS50b0JlQ2FsbGVkV2l0aChbMV0pICk7XG4gICAgdCgnbW92ZXMgdXAnLCAndXAnLCAoKSA9PiBleHBlY3QobW9ja1N1YnNjcmliZXIpLnRvQmVDYWxsZWRXaXRoKFsxLCAxXSkgKTtcbiAgfSk7XG59KTtcbiJdfQ==