UNPKG

node-sagas

Version:

Library for handling distributed transactions in the microservices architecture

40 lines 1.68 kB
"use strict"; 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