diff --git a/packages/backend/src/serializers/step.js b/packages/backend/src/serializers/step.js index 8f40856f..27a9060c 100644 --- a/packages/backend/src/serializers/step.js +++ b/packages/backend/src/serializers/step.js @@ -1,5 +1,7 @@ +import executionStepSerializer from './execution-step.js'; + const stepSerializer = (step) => { - return { + let stepData = { id: step.id, type: step.type, key: step.key, @@ -10,6 +12,14 @@ const stepSerializer = (step) => { position: step.position, parameters: step.parameters, }; + + if (step.executionSteps?.length > 0) { + stepData.executionSteps = step.executionSteps.map((executionStep) => + executionStepSerializer(executionStep) + ); + } + + return stepData; }; export default stepSerializer; diff --git a/packages/backend/src/serializers/step.test.js b/packages/backend/src/serializers/step.test.js index 4ddf918c..5ebc340e 100644 --- a/packages/backend/src/serializers/step.test.js +++ b/packages/backend/src/serializers/step.test.js @@ -1,6 +1,8 @@ import { describe, it, expect, beforeEach } from 'vitest'; import { createStep } from '../../test/factories/step'; +import { createExecutionStep } from '../../test/factories/execution-step'; import stepSerializer from './step'; +import executionStepSerializer from './execution-step'; describe('stepSerializer', () => { let step; @@ -24,4 +26,20 @@ describe('stepSerializer', () => { expect(stepSerializer(step)).toEqual(expectedPayload); }); + + it('should return step data with the execution steps', async () => { + const executionStepOne = await createExecutionStep({ stepId: step.id }); + const executionStepTwo = await createExecutionStep({ stepId: step.id }); + + step.executionSteps = [executionStepOne, executionStepTwo]; + + const expectedPayload = { + executionSteps: [ + executionStepSerializer(executionStepOne), + executionStepSerializer(executionStepTwo), + ], + }; + + expect(stepSerializer(step)).toMatchObject(expectedPayload); + }); });