feat(core): Archive workflows when removing folders without transfer (#15057)

This commit is contained in:
Jaakko Husso
2025-05-10 11:37:42 +03:00
committed by GitHub
parent 14f59373d2
commit 403f08b6e3
6 changed files with 95 additions and 16 deletions

View File

@@ -757,7 +757,7 @@ describe('DELETE /projects/:projectId/folders/:folderId', () => {
expect(folderInDb).toBeNull();
});
test('should delete folder, all child folders, and contained workflows when no transfer folder is specified', async () => {
test('should delete folder, all child folders, and archive and move contained workflows to project root when no transfer folder is specified', async () => {
const project = await createTeamProject('test', owner);
const rootFolder = await createFolder(project, { name: 'Root' });
const childFolder = await createFolder(project, {
@@ -766,9 +766,8 @@ describe('DELETE /projects/:projectId/folders/:folderId', () => {
});
// Create workflows in the folders
const workflow1 = await createWorkflow({ parentFolder: rootFolder }, owner);
const workflow2 = await createWorkflow({ parentFolder: childFolder }, owner);
const workflow1 = await createWorkflow({ parentFolder: rootFolder, active: false }, owner);
const workflow2 = await createWorkflow({ parentFolder: childFolder, active: true }, owner);
await authOwnerAgent.delete(`/projects/${project.id}/folders/${rootFolder.id}`);
@@ -780,10 +779,24 @@ describe('DELETE /projects/:projectId/folders/:folderId', () => {
expect(childFolderInDb).toBeNull();
// Check workflows
const workflow1InDb = await workflowRepository.findOneBy({ id: workflow1.id });
const workflow2InDb = await workflowRepository.findOneBy({ id: workflow2.id });
expect(workflow1InDb).toBeNull();
expect(workflow2InDb).toBeNull();
const workflow1InDb = await workflowRepository.findOne({
where: { id: workflow1.id },
relations: ['parentFolder'],
});
expect(workflow1InDb).not.toBeNull();
expect(workflow1InDb?.isArchived).toBe(true);
expect(workflow1InDb?.parentFolder).toBe(null);
expect(workflow1InDb?.active).toBe(false);
const workflow2InDb = await workflowRepository.findOne({
where: { id: workflow2.id },
relations: ['parentFolder'],
});
expect(workflow2InDb).not.toBeNull();
expect(workflow2InDb?.isArchived).toBe(true);
expect(workflow2InDb?.parentFolder).toBe(null);
expect(workflow2InDb?.active).toBe(false);
});
test('should transfer folder contents when transferToFolderId is specified', async () => {