typedux
Version:
Slightly adjusted Redux (awesome by default) for TS
132 lines • 5.67 kB
JavaScript
(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