feat(core): Allow filtering workflows by project and transferring workflows in Public API (#10231)
This commit is contained in:
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user