node-sagas
Version:
Library for handling distributed transactions in the microservices architecture
40 lines • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const saga_builder_1 = require("../saga-builder");
const saga_1 = require("../saga");
const saga_params_1 = require("./saga-params");
const exceptions_1 = require("../exceptions");
describe('Saga functionality', () => {
it('should build and execute saga with invocation steps', async () => {
const sagaBuilder = new saga_builder_1.SagaBuilder();
const saga = sagaBuilder
.step()
.invoke((params) => params.setParam(1))
.step()
.invoke((params) => params.setParam(2))
.step()
.invoke((params) => params.setParam(3))
.build();
const result = await saga.execute(new saga_params_1.SagaParams());
expect(result.getParam()).toEqual(3);
expect(saga.getState()).toBe(saga_1.SagaStates.Complete);
});
it('should build and execute saga with compensation steps', async () => {
const sagaBuilder = new saga_builder_1.SagaBuilder();
const saga = sagaBuilder
.step()
.invoke((params) => params.setParam(1))
.withCompensation((params) => params.setParam(4))
.step()
.invoke((params) => params.setParam(2))
.step()
.invoke((params) => {
params.setParam(3);
throw new Error();
})
.build();
await expect(saga.execute(new saga_params_1.SagaParams())).rejects.toThrow(exceptions_1.SagaExecutionFailed);
expect(saga.getState()).toBe(saga_1.SagaStates.CompensationComplete);
});
});
//# sourceMappingURL=saga-behavior.spec.js.map