feat: Introduce flow serializer
This commit is contained in:
18
packages/backend/src/serializers/flow.js
Normal file
18
packages/backend/src/serializers/flow.js
Normal 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;
|
44
packages/backend/src/serializers/flow.test.js
Normal file
44
packages/backend/src/serializers/flow.test.js
Normal 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);
|
||||||
|
});
|
||||||
|
});
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user