state-synchronizers
Version:
Deterministically update state based on other state
40 lines (39 loc) • 1.63 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
exports.__esModule = true;
var with_state_synchronization_1 = require("./with-state-synchronization");
describe('withStateSynchronization', function () {
var stateUpdater = jest.fn(function (state) { return (__assign(__assign({}, state), { value: state.value + 1 })); });
// eslint-disable-next-line @typescript-eslint/no-unused-vars
var wrappedFunction = jest.fn(function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return ({ value: 5 });
});
var functionWithStateSynchronization = with_state_synchronization_1.withStateSynchronization(stateUpdater)(wrappedFunction);
beforeEach(function () {
jest.clearAllMocks();
});
it('should call the wrapped function with passed arguments', function () {
expect.hasAssertions();
functionWithStateSynchronization(1, 2);
expect(wrappedFunction).toHaveBeenCalledWith(1, 2);
});
it('should return the synchronized state', function () {
expect.hasAssertions();
var result = functionWithStateSynchronization();
expect(result).toStrictEqual({ value: 6 });
});
});