feat(core): Update PATCH /projects/:projectId/folders/:folderId to support tags (no-changelog) (#13456)

This commit is contained in:
Ricardo Espinoza
2025-02-26 07:30:59 -05:00
committed by GitHub
parent 3aa679e4ac
commit 27852e35ed
5 changed files with 118 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ import type { User } from '@/databases/entities/user';
import { FolderRepository } from '@/databases/repositories/folder.repository';
import { ProjectRepository } from '@/databases/repositories/project.repository';
import { createFolder } from '@test-integration/db/folders';
import { createTag } from '@test-integration/db/tags';
import { createTeamProject, linkUserToProject } from '../shared/db/projects';
import { createOwner, createMember } from '../shared/db/users';
@@ -408,4 +409,57 @@ describe('PATCH /projects/:projectId/folders/:folderId', () => {
const folderInDb = await folderRepository.findOneBy({ id: folder.id });
expect(folderInDb?.name).toBe('Updated Folder Name');
});
test('should update folder tags', async () => {
const project = await createTeamProject('test project', owner);
const folder = await createFolder(project, { name: 'Test Folder' });
const tag1 = await createTag({ name: 'Tag 1' });
const tag2 = await createTag({ name: 'Tag 2' });
const payload = {
tagIds: [tag1.id, tag2.id],
};
await authOwnerAgent
.patch(`/projects/${project.id}/folders/${folder.id}`)
.send(payload)
.expect(200);
const folderWithTags = await folderRepository.findOne({
where: { id: folder.id },
relations: ['tags'],
});
expect(folderWithTags?.tags).toHaveLength(2);
expect(folderWithTags?.tags.map((t) => t.id).sort()).toEqual([tag1.id, tag2.id].sort());
});
test('should replace existing folder tags with new ones', async () => {
const project = await createTeamProject(undefined, owner);
const tag1 = await createTag({ name: 'Tag 1' });
const tag2 = await createTag({ name: 'Tag 2' });
const tag3 = await createTag({ name: 'Tag 3' });
const folder = await createFolder(project, {
name: 'Test Folder',
tags: [tag1, tag2],
});
const payload = {
tagIds: [tag3.id],
};
await authOwnerAgent
.patch(`/projects/${project.id}/folders/${folder.id}`)
.send(payload)
.expect(200);
const folderWithTags = await folderRepository.findOne({
where: { id: folder.id },
relations: ['tags'],
});
expect(folderWithTags?.tags).toHaveLength(1);
expect(folderWithTags?.tags[0].id).toBe(tag3.id);
});
});