feat: Introduce flow serializer

This commit is contained in:
Faruk AYDIN
2024-02-25 23:31:22 +01:00
parent 7e35f544eb
commit 74fbc937a1
3 changed files with 66 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
import stepSerializer from './step.js';
const flowSerializer = (flow) => {
let flowData = {
id: flow.id,
name: flow.name,
active: flow.active,
status: flow.status,
};
if (flow.steps) {
flowData.steps = flow.steps.map((step) => stepSerializer(step));
}
return flowData;
};
export default flowSerializer;

View File

@@ -0,0 +1,44 @@
import { describe, it, expect, beforeEach } from 'vitest';
import { createFlow } from '../../test/factories/flow';
import flowSerializer from './flow';
import stepSerializer from './step';
import { createStep } from '../../test/factories/step';
describe('flowSerializer', () => {
let flow, stepOne, stepTwo;
beforeEach(async () => {
flow = await createFlow();
stepOne = await createStep({
flowId: flow.id,
type: 'trigger',
});
stepTwo = await createStep({
flowId: flow.id,
type: 'action',
});
});
it('should return flow data', async () => {
const expectedPayload = {
id: flow.id,
name: flow.name,
active: flow.active,
status: flow.status,
};
expect(flowSerializer(flow)).toEqual(expectedPayload);
});
it('should return flow data with the steps', async () => {
flow.steps = [stepOne, stepTwo];
const expectedPayload = {
steps: [stepSerializer(stepOne), stepSerializer(stepTwo)],
};
expect(flowSerializer(flow)).toMatchObject(expectedPayload);
});
});

View File

@@ -3,6 +3,8 @@ import roleSerializer from './role.js';
import permissionSerializer from './permission.js'; import permissionSerializer from './permission.js';
import samlAuthProviderSerializer from './saml-auth-provider.ee.js'; import samlAuthProviderSerializer from './saml-auth-provider.ee.js';
import appAuthClientSerializer from './app-auth-client.js'; import appAuthClientSerializer from './app-auth-client.js';
import flowSerializer from './flow.js';
import stepSerializer from './step.js';
const serializers = { const serializers = {
User: userSerializer, User: userSerializer,
@@ -10,6 +12,8 @@ const serializers = {
Permission: permissionSerializer, Permission: permissionSerializer,
SamlAuthProvider: samlAuthProviderSerializer, SamlAuthProvider: samlAuthProviderSerializer,
AppAuthClient: appAuthClientSerializer, AppAuthClient: appAuthClientSerializer,
Flow: flowSerializer,
Step: stepSerializer,
}; };
export default serializers; export default serializers;