From 176eb7b35d6b71ae06c3c98e6be8393834af412e Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 19 May 2025 08:19:06 +0000 Subject: [PATCH] fix(folder): cover soft deleted flows on delete --- packages/backend/src/models/folder.js | 5 ++++- packages/backend/src/models/folder.test.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/models/folder.js b/packages/backend/src/models/folder.js index c45f8de4..de477f32 100644 --- a/packages/backend/src/models/folder.js +++ b/packages/backend/src/models/folder.js @@ -38,7 +38,10 @@ class Folder extends Base { }); async delete() { - await this.$relatedQuery('flows').patch({ folderId: null }); + await this.$relatedQuery('flows') + .withSoftDeleted() + .patch({ folderId: null }); + await this.$query().delete(); } } diff --git a/packages/backend/src/models/folder.test.js b/packages/backend/src/models/folder.test.js index ca983f78..417b4435 100644 --- a/packages/backend/src/models/folder.test.js +++ b/packages/backend/src/models/folder.test.js @@ -54,6 +54,20 @@ describe('Folder model', () => { expect(refetchedFlow.folderId).toBe(null); }); + it('should set folderId to null for all related soft-deleted flows before deleting the folder', async () => { + const user = await createUser(); + + const folder = await createFolder({ userId: user.id }); + const flow = await createFlow({ folderId: folder.id, userId: user.id }); + + await flow.$query().delete(); + + await folder.delete(); + + const refetchedFlow = await flow.$query().withSoftDeleted(); + expect(refetchedFlow.folderId).toBe(null); + }); + it('should delete the folder', async () => { const user = await createUser(); const folder = await createFolder({ userId: user.id });