overmind
Version:
Frictionless state management
27 lines (25 loc) • 1.19 kB
JavaScript
import { deepCopy } from "./statemachine.js";
import { MODE_TEST, createOnInitialize } from "./utils.js";
import { Overmind } from "./Overmind.js";
//#region src/OvermindMock.ts
function createOvermindMock(...args) {
const setState = typeof args[1] === "function" ? args[1] : args[2];
const mockedEffects = typeof args[1] === "function" ? void 0 : args[1];
const state = deepCopy(args[0].state);
if (setState) setState(state);
const mock = new Overmind(Object.assign({}, args[0], { state }), { devtools: false }, {
mode: MODE_TEST,
options: { effectsCallback: (effect) => {
const mockedEffect = (effect.name ? effect.name.split(".") : []).reduce((aggr, key) => aggr ? aggr[key] : aggr, mockedEffects);
if (!mockedEffect || mockedEffect && !mockedEffect[effect.method]) throw new Error(`The effect "${effect.name}" with method ${effect.method} has not been mocked`);
return mockedEffect[effect.method](...effect.args);
} }
});
const action = mock.createAction("onInitialize", createOnInitialize());
mock.onInitialize = () => action(mock);
mock.mutations = [];
return mock;
}
//#endregion
export { createOvermindMock };
//# sourceMappingURL=OvermindMock.js.map