fix: workflow medium tests (#23952)

pull/13851/head
Jason Rasmussen 2025-11-17 11:26:30 +07:00 committed by GitHub
parent eeee5147cc
commit ce82e27f4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 37 additions and 52 deletions

@ -7,6 +7,7 @@ import { WorkflowRepository } from 'src/repositories/workflow.repository';
import { DB } from 'src/schema';
import { WorkflowService } from 'src/services/workflow.service';
import { newMediumService } from 'test/medium.factory';
import { factory } from 'test/small.factory';
import { getKyselyDB } from 'test/utils';
let defaultDatabase: Kysely<DB>;
@ -77,7 +78,7 @@ describe(WorkflowService.name, () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const workflow = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -103,7 +104,7 @@ describe(WorkflowService.name, () => {
it('should create a workflow with filters and actions', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const workflow = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -154,7 +155,7 @@ describe(WorkflowService.name, () => {
it('should throw error when creating workflow with invalid filter', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
await expect(
sut.create(auth, {
@ -162,12 +163,7 @@ describe(WorkflowService.name, () => {
name: 'invalid-workflow',
description: 'A workflow with invalid filter',
enabled: true,
filters: [
{
filterId: '66da82df-e424-4bf4-b6f3-5d8e71620dae',
filterConfig: { key: 'value' },
},
],
filters: [{ filterId: factory.uuid(), filterConfig: { key: 'value' } }],
actions: [],
}),
).rejects.toThrow('Invalid filter ID');
@ -176,7 +172,7 @@ describe(WorkflowService.name, () => {
it('should throw error when creating workflow with invalid action', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
await expect(
sut.create(auth, {
@ -185,12 +181,7 @@ describe(WorkflowService.name, () => {
description: 'A workflow with invalid action',
enabled: true,
filters: [],
actions: [
{
actionId: '66da82df-e424-4bf4-b6f3-5d8e71620dae',
actionConfig: { action: 'test' },
},
],
actions: [{ actionId: factory.uuid(), actionConfig: { action: 'test' } }],
}),
).rejects.toThrow('Invalid action ID');
});
@ -198,7 +189,7 @@ describe(WorkflowService.name, () => {
it('should throw error when filter does not support trigger context', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
// Create a plugin with a filter that only supports Album context
const pluginRepo = new PluginRepository(defaultDatabase);
@ -238,7 +229,7 @@ describe(WorkflowService.name, () => {
it('should throw error when action does not support trigger context', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
// Create a plugin with an action that only supports Person context
const pluginRepo = new PluginRepository(defaultDatabase);
@ -278,7 +269,7 @@ describe(WorkflowService.name, () => {
it('should create workflow with multiple filters and actions in correct order', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const workflow = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -313,7 +304,7 @@ describe(WorkflowService.name, () => {
it('should return all workflows for a user', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const workflow1 = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -347,7 +338,7 @@ describe(WorkflowService.name, () => {
it('should return empty array when user has no workflows', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const workflows = await sut.getAll(auth);
@ -358,8 +349,8 @@ describe(WorkflowService.name, () => {
const { sut, ctx } = setup();
const { user: user1 } = await ctx.newUser();
const { user: user2 } = await ctx.newUser();
const auth1 = { user: { id: user1.id } } as any;
const auth2 = { user: { id: user2.id } } as any;
const auth1 = factory.auth({ user: user1 });
const auth2 = factory.auth({ user: user2 });
await sut.create(auth1, {
triggerType: PluginTriggerType.AssetCreate,
@ -380,7 +371,7 @@ describe(WorkflowService.name, () => {
it('should return a specific workflow by id', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -406,7 +397,7 @@ describe(WorkflowService.name, () => {
it('should throw error when workflow does not exist', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
await expect(sut.get(auth, '66da82df-e424-4bf4-b6f3-5d8e71620dae')).rejects.toThrow();
});
@ -415,8 +406,8 @@ describe(WorkflowService.name, () => {
const { sut, ctx } = setup();
const { user: user1 } = await ctx.newUser();
const { user: user2 } = await ctx.newUser();
const auth1 = { user: { id: user1.id } } as any;
const auth2 = { user: { id: user2.id } } as any;
const auth1 = factory.auth({ user: user1 });
const auth2 = factory.auth({ user: user2 });
const workflow = await sut.create(auth1, {
triggerType: PluginTriggerType.AssetCreate,
@ -435,7 +426,7 @@ describe(WorkflowService.name, () => {
it('should update workflow basic fields', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -463,7 +454,7 @@ describe(WorkflowService.name, () => {
it('should update workflow filters', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -489,7 +480,7 @@ describe(WorkflowService.name, () => {
it('should update workflow actions', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -515,7 +506,7 @@ describe(WorkflowService.name, () => {
it('should clear filters when updated with empty array', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -536,7 +527,7 @@ describe(WorkflowService.name, () => {
it('should throw error when no fields to update', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -553,21 +544,17 @@ describe(WorkflowService.name, () => {
it('should throw error when updating non-existent workflow', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
await expect(
sut.update(auth, 'non-existent-id', {
name: 'updated-name',
}),
).rejects.toThrow();
await expect(sut.update(auth, factory.uuid(), { name: 'updated-name' })).rejects.toThrow();
});
it('should throw error when user does not have access to update workflow', async () => {
const { sut, ctx } = setup();
const { user: user1 } = await ctx.newUser();
const { user: user2 } = await ctx.newUser();
const auth1 = { user: { id: user1.id } } as any;
const auth2 = { user: { id: user2.id } } as any;
const auth1 = factory.auth({ user: user1 });
const auth2 = factory.auth({ user: user2 });
const workflow = await sut.create(auth1, {
triggerType: PluginTriggerType.AssetCreate,
@ -588,7 +575,7 @@ describe(WorkflowService.name, () => {
it('should throw error when updating with invalid filter', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -601,7 +588,7 @@ describe(WorkflowService.name, () => {
await expect(
sut.update(auth, created.id, {
filters: [{ filterId: 'invalid-filter-id', filterConfig: {} }],
filters: [{ filterId: factory.uuid(), filterConfig: {} }],
}),
).rejects.toThrow();
});
@ -609,7 +596,7 @@ describe(WorkflowService.name, () => {
it('should throw error when updating with invalid action', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const created = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -621,9 +608,7 @@ describe(WorkflowService.name, () => {
});
await expect(
sut.update(auth, created.id, {
actions: [{ actionId: 'invalid-action-id', actionConfig: {} }],
}),
sut.update(auth, created.id, { actions: [{ actionId: factory.uuid(), actionConfig: {} }] }),
).rejects.toThrow();
});
});
@ -632,7 +617,7 @@ describe(WorkflowService.name, () => {
it('should delete a workflow', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const workflow = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -651,7 +636,7 @@ describe(WorkflowService.name, () => {
it('should delete workflow with filters and actions', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
const workflow = await sut.create(auth, {
triggerType: PluginTriggerType.AssetCreate,
@ -670,17 +655,17 @@ describe(WorkflowService.name, () => {
it('should throw error when deleting non-existent workflow', async () => {
const { sut, ctx } = setup();
const { user } = await ctx.newUser();
const auth = { user: { id: user.id } } as any;
const auth = factory.auth({ user });
await expect(sut.delete(auth, 'non-existent-id')).rejects.toThrow();
await expect(sut.delete(auth, factory.uuid())).rejects.toThrow();
});
it('should throw error when user does not have access to delete workflow', async () => {
const { sut, ctx } = setup();
const { user: user1 } = await ctx.newUser();
const { user: user2 } = await ctx.newUser();
const auth1 = { user: { id: user1.id } } as any;
const auth2 = { user: { id: user2.id } } as any;
const auth1 = factory.auth({ user: user1 });
const auth2 = factory.auth({ user: user2 });
const workflow = await sut.create(auth1, {
triggerType: PluginTriggerType.AssetCreate,