UNPKG

typedux

Version:

Slightly adjusted Redux (awesome by default) for TS

132 lines 5.67 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "jest", "@3fv/logger-proxy", "../util", "./mocks/MockConstants", "./mocks/MockActionFactory", "./mocks/MockStore", "./mocks/MockLeafState", "../constants"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("jest"); var logger_proxy_1 = require("@3fv/logger-proxy"); var util_1 = require("../util"); var MockConstants_1 = require("./mocks/MockConstants"); var MockActionFactory_1 = require("./mocks/MockActionFactory"); var MockStore_1 = require("./mocks/MockStore"); var MockLeafState_1 = require("./mocks/MockLeafState"); var constants_1 = require("../constants"); var log = logger_proxy_1.getLogger(__filename); // configureMockStoreFactory() // installMockGlobalStore() // // class MockLeafReducer implements ILeafReducer<MockLeafState,MockMessage> { // // leaf():string { // return MockKey; // } // // prepareState(o:any) { // return o // } // // // defaultState() { // return new MockLeafState() // } // } // Simple mock factory describe('Typedux', function () { jest.setTimeout(10000); var //reducer:RootReducer<any>, mockStoreFactory, leafReducer, store = null, actions, getInternalState = function () { if (!store) throw Error("store not set"); return store.getState()[constants_1.INTERNAL_KEY]; }; beforeEach(function () { //[leafReducer] = ObservableStore.makeSimpleReducers({type: MockKey, str1: MockStateStr1} as State<typeof MockKey>)//new MockLeafReducer() // ROOT REDUCER //reducer = createMockRootReducer(ObservableStore.makeInternalReducer(),leafReducer) mockStoreFactory = MockStore_1.configureMockStoreFactory([], [], [MockActionFactory_1.MockActionFactory]); // STORE store = mockStoreFactory(function () { var _a; return (_a = {}, _a[MockLeafState_1.MockLeafState.Key] = new MockLeafState_1.MockLeafState(), _a); }); // createMockStore( // getDefaultMockState(reducer), // reducer.makeGenericHandler(), // (data) => { // log.debug('on state change',data) // }) // INIT store.dispatch({ type: '@INIT' }); // ACTIONS actions = new MockActionFactory_1.MockActionFactory(store); }); it('Uses reducers on the action message', function () { var state = store.getState(); var mockState = actions.state; expect(mockState.str1).toBe(MockConstants_1.MockStateStr1); // Make an update var mockStr1Update = 'my own personal idaho'; actions.mockUpdate(mockStr1Update); // Ensure state is different expect(store.getState()).not.toBe(state); // Make sure the children changed too var mockStateAfter = actions.state; expect(mockState).not.toBe(mockStateAfter); expect(mockStr1Update).toBe(mockStateAfter.str1); }); it('Uses state reducers too', function () { var //state = store.getState(), mockState = actions.state; expect(mockState.str2).toBeUndefined(); var str2Update = 'my new str2'; actions.mockUpdateFromState(str2Update); var mockStateAfter = actions.state; expect(mockStateAfter.str2).toBe(str2Update); expect(mockStateAfter.str2).not.toBe(mockState.str2); }); it('PromisesAction', function () { var // FUNCTION TEST thunkPromise = actions.mockThunk().then(function (result) { expect(result).toBe('mock'); return util_1.Bluebird .delay(1000).then(function () { var internalState = getInternalState(); // getGlobalStoreInternalState() expect(internalState.hasPendingActions).toBe(false); expect(internalState.totalActionCount).toBe(1); expect(internalState.pendingActionCount).toBe(0); }); }), // TRACKING TEST pendingPromise = util_1.Bluebird.delay(300).then(function () { expect(getInternalState().hasPendingActions).toBe(true); expect(getInternalState().pendingActionCount).toBe(1); }); return pendingPromise.then(function () { return thunkPromise; }); }); it('Promises action Exception', function () { return actions.mockThunkError() .then(function () { throw new Error("Thunk should not resolve, - should reject"); }) .catch(function (err) { expect(err instanceof Error).toBe(true); return util_1.Bluebird.delay(1000).then(function () { var internalState = getInternalState(); expect(internalState.pendingActionCount).toBe(0); }); }); }); }); }); //# sourceMappingURL=TypeDux.spec.js.map