UNPKG

typedux

Version:

Slightly adjusted Redux (awesome by default) for TS

119 lines 4.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("jest"); const logger_proxy_1 = require("@3fv/logger-proxy"); const util_1 = require("../util"); const MockConstants_1 = require("./mocks/MockConstants"); const MockActionFactory_1 = require("./mocks/MockActionFactory"); const MockStore_1 = require("./mocks/MockStore"); const MockLeafState_1 = require("./mocks/MockLeafState"); const constants_1 = require("../constants"); const 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); let //reducer:RootReducer<any>, mockStoreFactory, leafReducer, store = null, actions, getInternalState = () => { if (!store) throw Error("store not set"); return store.getState()[constants_1.INTERNAL_KEY]; }; beforeEach(() => { //[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(() => ({ [MockLeafState_1.MockLeafState.Key]: new MockLeafState_1.MockLeafState() })); // 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', () => { let state = store.getState(); let mockState = actions.state; expect(mockState.str1).toBe(MockConstants_1.MockStateStr1); // Make an update const mockStr1Update = 'my own personal idaho'; actions.mockUpdate(mockStr1Update); // Ensure state is different expect(store.getState()).not.toBe(state); // Make sure the children changed too let mockStateAfter = actions.state; expect(mockState).not.toBe(mockStateAfter); expect(mockStr1Update).toBe(mockStateAfter.str1); }); it('Uses state reducers too', () => { let //state = store.getState(), mockState = actions.state; expect(mockState.str2).toBeUndefined(); const str2Update = 'my new str2'; actions.mockUpdateFromState(str2Update); let mockStateAfter = actions.state; expect(mockStateAfter.str2).toBe(str2Update); expect(mockStateAfter.str2).not.toBe(mockState.str2); }); it('PromisesAction', () => { const // FUNCTION TEST thunkPromise = actions.mockThunk().then((result) => { expect(result).toBe('mock'); return util_1.Bluebird .delay(1000).then(() => { const 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(() => { expect(getInternalState().hasPendingActions).toBe(true); expect(getInternalState().pendingActionCount).toBe(1); }); return pendingPromise.then(() => thunkPromise); }); it('Promises action Exception', () => { return actions.mockThunkError() .then(() => { throw new Error(`Thunk should not resolve, - should reject`); }) .catch(err => { expect(err instanceof Error).toBe(true); return util_1.Bluebird.delay(1000).then(() => { const internalState = getInternalState(); expect(internalState.pendingActionCount).toBe(0); }); }); }); }); //# sourceMappingURL=TypeDux.spec.js.map