fix: workflow medium tests (#23952)

This commit is contained in:
Jason Rasmussen
2025-11-17 11:26:30 -05:00
committed by GitHub
parent eeee5147cc
commit ce82e27f4b

View File

@@ -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,