diff --git a/packages/backend/src/controllers/api/v1/flows/create-flow.js b/packages/backend/src/controllers/api/v1/flows/create-flow.js index 39d12f33..16e6bbe3 100644 --- a/packages/backend/src/controllers/api/v1/flows/create-flow.js +++ b/packages/backend/src/controllers/api/v1/flows/create-flow.js @@ -1,11 +1,7 @@ import { renderObject } from '../../../../helpers/renderer.js'; export default async (request, response) => { - const flow = await request.currentUser.$relatedQuery('flows').insertAndFetch({ - name: 'Name your flow', - }); - - await flow.createInitialSteps(); + const flow = await request.currentUser.createEmptyFlow(); renderObject(response, flow, { status: 201 }); }; diff --git a/packages/backend/src/models/flow.js b/packages/backend/src/models/flow.js index 51a90a3a..9c05868b 100644 --- a/packages/backend/src/models/flow.js +++ b/packages/backend/src/models/flow.js @@ -40,10 +40,6 @@ class Flow extends Base { }, }; - static async import(user, flowData) { - return importFlow(user, flowData); - } - static relationMappings = () => ({ steps: { relation: Base.HasManyRelation, @@ -104,6 +100,10 @@ class Flow extends Base { }, }); + static async import(user, flowData) { + return importFlow(user, flowData); + } + static async populateStatusProperty(flows) { const referenceFlow = flows[0]; diff --git a/packages/backend/src/models/user.js b/packages/backend/src/models/user.js index cb1e2156..2596318c 100644 --- a/packages/backend/src/models/user.js +++ b/packages/backend/src/models/user.js @@ -675,6 +675,14 @@ class User extends Base { } } + async createEmptyFlow() { + const flow = await this.$relatedQuery('flows').insertAndFetch({ + name: 'Name your flow', + }); + + return await flow.createInitialSteps(); + } + async $beforeInsert(queryContext) { await super.$beforeInsert(queryContext); diff --git a/packages/backend/src/models/user.test.js b/packages/backend/src/models/user.test.js index 4eae81c0..6f1a61a4 100644 --- a/packages/backend/src/models/user.test.js +++ b/packages/backend/src/models/user.test.js @@ -1507,6 +1507,28 @@ describe('User model', () => { }); }); + describe('createEmptyFlow', () => { + it('should create a flow with default name', async () => { + const user = await createUser(); + const flow = await user.createEmptyFlow(); + + expect(flow.name).toBe('Name your flow'); + expect(flow.userId).toBe(user.id); + }); + + it('should call createInitialSteps on the created flow', async () => { + const user = await createUser(); + const createInitialStepsSpy = vi.spyOn( + Flow.prototype, + 'createInitialSteps' + ); + + await user.createEmptyFlow(); + + expect(createInitialStepsSpy).toHaveBeenCalledOnce(); + }); + }); + describe('$beforeInsert', () => { it('should call super.$beforeInsert', async () => { const superBeforeInsertSpy = vi