UNPKG

@store-sync/redux-middleware

Version:
71 lines 2.22 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const redux_1 = require("redux"); const _1 = require("./"); describe('storeSync', () => { const alwaysTheDiff = [1, 2, 3]; class TestTransport { constructor() { this.messages = []; this.listeners = []; this.send = jest.fn((msg) => { this.messages.push(msg); }); } addMessageListener(listener) { this.listeners.push(listener); } receiveChange(msg) { this.listeners.forEach(listener => { listener(msg); }); } } class TestDiffer { diff(a, b) { return alwaysTheDiff; } apply(a, patch) { return [...a, ...patch]; } } const transport = new TestTransport(); const differ = new TestDiffer(); const storeSync = _1.default({ transport, differ }); const theOneActionWeCareAbout = 'HELLO_WORLD'; const reducer = (state = [], action) => { switch (action.type) { case theOneActionWeCareAbout: return [...state, action.payload]; } return state; }; it('sends diffs', () => { const store = redux_1.createStore(reducer, [], redux_1.applyMiddleware(storeSync)); store.dispatch({ type: theOneActionWeCareAbout, payload: 1, }); expect(store.getState()).toStrictEqual([1]); expect(transport.send).toHaveBeenCalledWith({ diff: alwaysTheDiff, datetime: expect.any(Number), }); }); it('applies diffs it receives', () => { const mockReducer = jest.fn(reducer); redux_1.createStore(mockReducer, [], redux_1.applyMiddleware(storeSync)); transport.receiveChange({ datetime: Date.now(), diff: alwaysTheDiff, }); expect(mockReducer).toHaveBeenLastCalledWith([], { type: 'STORE_SYNC_UPDATE', payload: alwaysTheDiff, meta: { datetime: expect.any(Number), }, }); }); }); //# sourceMappingURL=index.test.js.map