@helpscout/cyan
Version:
Cypress-like Testing for React + JSDOM
122 lines (90 loc) • 3.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.completelyResetStore = exports.resetStore = exports.setStoreReducer = exports.setInitialState = exports.setStoreState = exports.setStore = exports.getStoreState = exports.getStoreReducer = exports.getStore = exports.mockStore = exports.mockReducer = void 0;
var _redux = require("redux");
var _invariant = _interopRequireDefault(require("invariant"));
var _deepmerge = _interopRequireDefault(require("deepmerge"));
var _is = require("./utils/is.utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var mockReducer = function (state) {
if (state === void 0) {
state = {};
}
return state;
};
exports.mockReducer = mockReducer;
var mockStore = (0, _redux.createStore)(mockReducer, {});
exports.mockStore = mockStore;
var CYAN_STORE = mockStore;
var CYAN_STORE_REDUCER = mockReducer;
var CYAN_STORE_INITIAL_STATE = {};
var getStore = function () {
return CYAN_STORE;
};
exports.getStore = getStore;
var getStoreReducer = function () {
return CYAN_STORE_REDUCER;
};
exports.getStoreReducer = getStoreReducer;
var getStoreState = function () {
return getStore().getState();
};
exports.getStoreState = getStoreState;
var setStore = function (store) {
if (store === void 0) {
store = mockStore;
}
(0, _invariant.default)((0, _is.isObject)(store), 'Provide setStore with a valid createStore() instance.');
CYAN_STORE = store;
CYAN_STORE_INITIAL_STATE = store.getState();
return getStore();
};
exports.setStore = setStore;
var setStoreState = function (nextState, callback) {
if (nextState === void 0) {
nextState = {};
}
if (callback === void 0) {
callback = function () {
return null;
};
}
(0, _invariant.default)((0, _is.isObject)(nextState), 'Provide setStoreState with a valid state (Object).');
var state = (0, _deepmerge.default)(getStoreState(), nextState);
var store = (0, _redux.createStore)(getStoreReducer(), state);
setStore(store);
(0, _invariant.default)((0, _is.isFunction)(callback), 'Provide setStoreState with a valid callback (Function).');
callback(state);
};
exports.setStoreState = setStoreState;
var setInitialState = function (initialState) {
if (initialState === void 0) {
initialState = {};
}
setStoreState(initialState);
return getStoreState();
};
exports.setInitialState = setInitialState;
var setStoreReducer = function (reducer) {
if (reducer === void 0) {
reducer = mockReducer;
}
(0, _invariant.default)((0, _is.isObject)(reducer) || (0, _is.isFunction)(reducer), 'Provide setStoreReducer with a valid reducer (Object/Function).');
CYAN_STORE_REDUCER = (0, _is.isObject)(reducer) ? (0, _redux.combineReducers)(reducer) : reducer;
setStoreState();
return reducer;
};
exports.setStoreReducer = setStoreReducer;
var resetStore = function () {
setInitialState(CYAN_STORE_INITIAL_STATE);
return getStore();
};
exports.resetStore = resetStore;
var completelyResetStore = function () {
setStoreReducer();
setStore();
return getStore();
};
exports.completelyResetStore = completelyResetStore;