UNPKG

redux-observable-sans

Version:
101 lines (77 loc) 3.81 kB
'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _reduxObservable = require('redux-observable'); var _rxjs = require('rxjs'); var _index = require('../index'); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } describe('socketEpic', function () { var me = { token: 'key', name: 'AB Normal', userId: '3f43f' }; var state$ = { value: { me: me } }; var subject = void 0; var action$ = void 0; var emittedActions = void 0; var socketEvents = void 0; var socket = { emit: function emit(type, msg) { return socketEvents.push([type, msg]); } }; var pushAction = function pushAction(emittedAction) { return emittedActions.push(emittedAction); }; var cA = (0, _index.commandAction)(function (i) { return i; })('doSomething')({ data: 'whatevs' }); var qA = (0, _index.queryAction)(function (i) { return i; })('getSomething')({ payload: 'whatevs' }); beforeEach(function () { subject = new _rxjs.Subject(); action$ = new _reduxObservable.ActionsObservable(subject); emittedActions = []; socketEvents = []; }); it('should return action and emit command event', function () { var result$ = _reduxObservable.combineEpics.apply(undefined, _toConsumableArray((0, _index.socketEpics)(socket)))(action$, state$); result$.subscribe(pushAction, console.error, console.error); subject.next(cA); subject.next(qA); expect(emittedActions).toEqual([_extends({}, cA.payload, { type: 'DO_SOMETHING' }), _extends({}, qA.payload, { type: 'GET_SOMETHING' })]); expect(socketEvents).toEqual([['command', _extends({}, cA.payload, { type: 'doSomething' })], ['query', _extends({}, qA.payload, { type: 'getSomething' })]]); }); it('should add token only to socket msg', function () { var auth = function auth(state$) { return { token: state$.value.me.token, userId: state$.value.me.userId }; }; var result$ = _reduxObservable.combineEpics.apply(undefined, _toConsumableArray((0, _index.socketEpics)(socket, auth)))(action$, state$); result$.subscribe(pushAction, console.error, console.error); subject.next(cA); subject.next(qA); expect(emittedActions).toEqual([_extends({}, cA.payload, { type: 'DO_SOMETHING' }), _extends({}, qA.payload, { type: 'GET_SOMETHING' })]); expect(socketEvents).toEqual([['command', _extends({}, cA.payload, { type: 'doSomething', token: me.token, userId: me.userId })], ['query', _extends({}, qA.payload, { type: 'getSomething', token: me.token, userId: me.userId })]]); }); }); describe('toAction', function () { it('should dispatch constant-case', function () { var dispatch = function dispatch(action) { expect(action).toEqual({ type: 'DID_SOMETHING', data: { what: 'evs' } }); }; (0, _index.toAction)(dispatch)({ type: 'DidSomething', data: { what: 'evs' } }); }); it('should dispatch _FAILURE', function () { var expectedActions = [{ type: 'COMMAND_REJECTED', payload: { type: 'DidSomething', data: { what: 'evs' } } }, { type: 'DID_SOMETHING_FAILURE', data: { what: 'evs' } }]; var count = 0; var dispatch = function dispatch(action) { expect(action).toEqual(expectedActions[count]); count++; }; (0, _index.toAction)(dispatch)({ type: 'CommandRejected', payload: { type: 'DidSomething', data: { what: 'evs' } } }); expect(count).toEqual(expectedActions.length); }); });