feat(core): Allow filtering workflows by project and transferring workflows in Public API (#10231)

This commit is contained in:
Iván Ovejero
2024-07-30 17:05:48 +02:00
committed by GitHub
parent 452f52c124
commit d719899223
7 changed files with 131 additions and 2 deletions

View File

@@ -21,6 +21,8 @@ import { createTag } from '../shared/db/tags';
import { mockInstance } from '../../shared/mocking';
import type { SuperAgentTest } from '../shared/types';
import { Telemetry } from '@/telemetry';
import { ProjectService } from '@/services/project.service';
import { createTeamProject } from '@test-integration/db/projects';
mockInstance(Telemetry);
@@ -265,6 +267,25 @@ describe('GET /workflows', () => {
}
});
test('should return all user-accessible workflows filtered by `projectId`', async () => {
license.setQuota('quota:maxTeamProjects', 2);
const otherProject = await Container.get(ProjectService).createTeamProject(
'Other project',
member,
);
await Promise.all([
createWorkflow({}, member),
createWorkflow({ name: 'Other workflow' }, otherProject),
]);
const response = await authMemberAgent.get(`/workflows?projectId=${otherProject.id}`);
expect(response.statusCode).toBe(200);
expect(response.body.data.length).toBe(1);
expect(response.body.data[0].name).toBe('Other workflow');
});
test('should return all owned workflows filtered by name', async () => {
const workflowName = 'Workflow 1';
@@ -1465,3 +1486,44 @@ describe('PUT /workflows/:id/tags', () => {
}
});
});
describe('PUT /workflows/:id/transfer', () => {
test('should transfer workflow to project', async () => {
/**
* Arrange
*/
const firstProject = await createTeamProject('first-project', member);
const secondProject = await createTeamProject('secon-project', member);
const workflow = await createWorkflow({}, firstProject);
/**
* Act
*/
const response = await authMemberAgent.put(`/workflows/${workflow.id}/transfer`).send({
destinationProjectId: secondProject.id,
});
/**
* Assert
*/
expect(response.statusCode).toBe(204);
});
test('if no destination project, should reject', async () => {
/**
* Arrange
*/
const firstProject = await createTeamProject('first-project', member);
const workflow = await createWorkflow({}, firstProject);
/**
* Act
*/
const response = await authMemberAgent.put(`/workflows/${workflow.id}/transfer`).send({});
/**
* Assert
*/
expect(response.statusCode).toBe(400);
});
});