From f0f5c8fc9a446e3902b14cfb6f52dae739e1cd38 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Fri, 14 Feb 2025 12:03:07 +0100 Subject: [PATCH] fix: Allow to have null folder for flows --- packages/backend/src/models/flow.js | 15 +++++++----- packages/backend/src/models/flow.test.js | 31 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/packages/backend/src/models/flow.js b/packages/backend/src/models/flow.js index 23c24a12..bd4a8058 100644 --- a/packages/backend/src/models/flow.js +++ b/packages/backend/src/models/flow.js @@ -351,17 +351,20 @@ class Flow extends Base { async updateFolder(folderId) { const user = await this.$relatedQuery('user'); + if (folderId === null) { + return this.updateFolderReference(null); + } + const folder = await user .$relatedQuery('folders') - .findOne({ - id: folderId, - }) + .findOne({ id: folderId }) .throwIfNotFound(); - await this.$query().patch({ - folderId: folder.id, - }); + return this.updateFolderReference(folder.id); + } + async updateFolderReference(folderId) { + await this.$query().patch({ folderId }); return this.$query().withGraphFetched('folder'); } diff --git a/packages/backend/src/models/flow.test.js b/packages/backend/src/models/flow.test.js index dc9049b8..5976880b 100644 --- a/packages/backend/src/models/flow.test.js +++ b/packages/backend/src/models/flow.test.js @@ -505,6 +505,37 @@ describe('Flow model', () => { expect(updatedFlow.folder.id).toBe(folder.id); expect(updatedFlow.folder.name).toBe(folder.name); }); + + it('should return the flow with null folder when folderId is null', async () => { + const user = await createUser(); + const flow = await createFlow({ userId: user.id }); + + const updatedFlow = await flow.updateFolder(null); + + expect(updatedFlow.folder).toBe(null); + }); + }); + + describe('updateFolderReference', () => { + it('should update the folder reference and return the flow with the updated folder', async () => { + const user = await createUser(); + const flow = await createFlow({ userId: user.id }); + const folder = await createFolder({ userId: user.id }); + + const updatedFlow = await flow.updateFolderReference(folder.id); + + expect(updatedFlow.folder.id).toBe(folder.id); + expect(updatedFlow.folder.name).toBe(folder.name); + }); + + it('should update the folder reference to null and return the flow with null folder', async () => { + const user = await createUser(); + const flow = await createFlow({ userId: user.id }); + + const updatedFlow = await flow.updateFolderReference(null); + + expect(updatedFlow.folder).toBe(null); + }); }); describe('throwIfHavingIncompleteSteps', () => {