Skip to content

Commit 295c498

Browse files
committed
fix error tests post normalization
1 parent 9f4a508 commit 295c498

File tree

4 files changed

+73
-61
lines changed

4 files changed

+73
-61
lines changed

workbench/nextjs-turbopack/app/api/trigger/route.ts

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { getRun, start } from 'workflow/api';
22
import { hydrateWorkflowArguments } from 'workflow/internal/serialization';
3-
import * as batchingWorkflow from '@/workflows/6_batching';
4-
import * as duplicateE2e from '@/workflows/98_duplicate_case';
5-
import * as e2eWorkflows from '@/workflows/99_e2e';
3+
import { allWorkflows } from '@/_workflows.js';
64
import {
75
WorkflowRunFailedError,
86
WorkflowRunNotCompletedError,
@@ -12,9 +10,28 @@ export async function POST(req: Request) {
1210
const url = new URL(req.url);
1311
const workflowFile =
1412
url.searchParams.get('workflowFile') || 'workflows/99_e2e.ts';
15-
const workflowFn = url.searchParams.get('workflowFn') || 'simple';
13+
if (!workflowFile) {
14+
return new Response('No workflowFile query parameter provided', {
15+
status: 400,
16+
});
17+
}
18+
const workflows = allWorkflows[workflowFile as keyof typeof allWorkflows];
19+
if (!workflows) {
20+
return new Response(`Workflow file "${workflowFile}" not found`, {
21+
status: 400,
22+
});
23+
}
1624

17-
console.log('calling workflow', { workflowFile, workflowFn });
25+
const workflowFn = url.searchParams.get('workflowFn') || 'simple';
26+
if (!workflowFn) {
27+
return new Response('No workflow query parameter provided', {
28+
status: 400,
29+
});
30+
}
31+
const workflow = workflows[workflowFn as keyof typeof workflows];
32+
if (!workflow) {
33+
return new Response(`Workflow "${workflowFn}" not found`, { status: 400 });
34+
}
1835

1936
let args: any[] = [];
2037

@@ -34,21 +51,10 @@ export async function POST(req: Request) {
3451
args = [42];
3552
}
3653
}
37-
console.log(
38-
`Starting "${workflowFile}/${workflowFn}" workflow with args: ${args}`
39-
);
54+
console.log(`Starting "${workflowFn}" workflow with args: ${args}`);
4055

4156
try {
42-
let workflows;
43-
if (workflowFile === 'workflows/99_e2e.ts') {
44-
workflows = e2eWorkflows;
45-
} else if (workflowFile === 'workflows/6_batching.ts') {
46-
workflows = batchingWorkflow;
47-
} else {
48-
workflows = duplicateE2e;
49-
}
50-
51-
const run = await start((workflows as any)[workflowFn], args);
57+
const run = await start(workflow as any, args as any);
5258
console.log('Run:', run);
5359
return Response.json(run);
5460
} catch (err) {

workbench/nextjs-webpack/app/api/trigger/route.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { getRun, start } from 'workflow/api';
22
import { hydrateWorkflowArguments } from 'workflow/internal/serialization';
33
import { allWorkflows } from '@/_workflows';
4+
import {
5+
WorkflowRunFailedError,
6+
WorkflowRunNotCompletedError,
7+
} from 'workflow/internal/errors';
48

59
export async function POST(req: Request) {
610
const url = new URL(req.url);
@@ -102,7 +106,7 @@ export async function GET(req: Request) {
102106
: Response.json(returnValue);
103107
} catch (error) {
104108
if (error instanceof Error) {
105-
if (error.name === 'WorkflowRunNotCompletedError') {
109+
if (WorkflowRunNotCompletedError.is(error)) {
106110
return Response.json(
107111
{
108112
...error,
@@ -113,13 +117,18 @@ export async function GET(req: Request) {
113117
);
114118
}
115119

116-
if (error.name === 'WorkflowRunFailedError') {
120+
if (WorkflowRunFailedError.is(error)) {
121+
const cause = error.cause;
117122
return Response.json(
118123
{
119124
...error,
120125
name: error.name,
121126
message: error.message,
122-
stack: error.stack,
127+
cause: {
128+
message: cause.message,
129+
stack: cause.stack,
130+
code: cause.code,
131+
},
123132
},
124133
{ status: 400 }
125134
);

workbench/sveltekit/src/routes/api/trigger/+server.ts

Lines changed: 25 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,37 @@
1-
import { json, type RequestHandler } from '@sveltejs/kit';
1+
import { type RequestHandler } from '@sveltejs/kit';
22
import { getRun, start } from 'workflow/api';
33
import { hydrateWorkflowArguments } from 'workflow/internal/serialization';
4-
import * as calcWorkflow from '../../../../workflows/0_calc';
5-
import * as batchingWorkflow from '../../../../workflows/6_batching';
6-
import * as duplicateE2e from '../../../../workflows/98_duplicate_case';
7-
import * as e2eWorkflows from '../../../../workflows/99_e2e';
4+
import { allWorkflows } from '$lib/_workflows.js';
85
import {
96
WorkflowRunFailedError,
107
WorkflowRunNotCompletedError,
118
} from 'workflow/internal/errors';
129

13-
const WORKFLOW_MODULES = {
14-
'workflows/0_calc.ts': calcWorkflow,
15-
'workflows/6_batching.ts': batchingWorkflow,
16-
'workflows/98_duplicate_case.ts': duplicateE2e,
17-
'workflows/99_e2e.ts': e2eWorkflows,
18-
} as const;
19-
2010
export const POST: RequestHandler = async ({ request }) => {
2111
const url = new URL(request.url);
2212
const workflowFile =
2313
url.searchParams.get('workflowFile') || 'workflows/99_e2e.ts';
24-
const workflowFn = url.searchParams.get('workflowFn') || 'simple';
25-
26-
console.log('calling workflow', { workflowFile, workflowFn });
27-
28-
const workflows =
29-
WORKFLOW_MODULES[workflowFile as keyof typeof WORKFLOW_MODULES];
14+
if (!workflowFile) {
15+
return new Response('No workflowFile query parameter provided', {
16+
status: 400,
17+
});
18+
}
19+
const workflows = allWorkflows[workflowFile as keyof typeof allWorkflows];
3020
if (!workflows) {
31-
return json(
32-
{ error: `Workflow file "${workflowFile}" not found` },
33-
{ status: 404 }
34-
);
21+
return new Response(`Workflow file "${workflowFile}" not found`, {
22+
status: 400,
23+
});
3524
}
3625

26+
const workflowFn = url.searchParams.get('workflowFn') || 'simple';
27+
if (!workflowFn) {
28+
return new Response('No workflow query parameter provided', {
29+
status: 400,
30+
});
31+
}
3732
const workflow = workflows[workflowFn as keyof typeof workflows];
3833
if (!workflow) {
39-
return json(
40-
{
41-
error: `Workflow "${workflowFn}" not found in "${workflowFile}"`,
42-
},
43-
{ status: 404 }
44-
);
34+
return new Response(`Workflow "${workflowFn}" not found`, { status: 400 });
4535
}
4636

4737
let args: any[] = [];
@@ -62,14 +52,12 @@ export const POST: RequestHandler = async ({ request }) => {
6252
args = [42];
6353
}
6454
}
65-
console.log(
66-
`Starting "${workflowFile}/${workflowFn}" workflow with args: ${args}`
67-
);
55+
console.log(`Starting "${workflowFn}" workflow with args: ${args}`);
6856

6957
try {
70-
const run = await start(workflow as any, args);
58+
const run = await start(workflow as any, args as any);
7159
console.log('Run:', run);
72-
return json(run);
60+
return Response.json(run);
7361
} catch (err) {
7462
console.error(`Failed to start!!`, err);
7563
throw err;
@@ -117,11 +105,11 @@ export const GET: RequestHandler = async ({ request }) => {
117105
'Content-Type': 'application/octet-stream',
118106
},
119107
})
120-
: json(returnValue);
108+
: Response.json(returnValue);
121109
} catch (error) {
122110
if (error instanceof Error) {
123111
if (WorkflowRunNotCompletedError.is(error)) {
124-
return json(
112+
return Response.json(
125113
{
126114
...error,
127115
name: error.name,
@@ -133,7 +121,7 @@ export const GET: RequestHandler = async ({ request }) => {
133121

134122
if (WorkflowRunFailedError.is(error)) {
135123
const cause = error.cause;
136-
return json(
124+
return Response.json(
137125
{
138126
...error,
139127
name: error.name,
@@ -153,7 +141,7 @@ export const GET: RequestHandler = async ({ request }) => {
153141
'Unexpected error while getting workflow return value:',
154142
error
155143
);
156-
return json(
144+
return Response.json(
157145
{
158146
error: 'Internal server error',
159147
},

workbench/vite/routes/api/trigger.get.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
import { getRun } from 'workflow/api';
2+
import {
3+
WorkflowRunFailedError,
4+
WorkflowRunNotCompletedError,
5+
} from 'workflow/internal/errors';
26

37
export default async ({ url }: { req: Request; url: URL }) => {
48
const runId = url.searchParams.get('runId');
@@ -43,7 +47,7 @@ export default async ({ url }: { req: Request; url: URL }) => {
4347
: Response.json(returnValue);
4448
} catch (error) {
4549
if (error instanceof Error) {
46-
if (error.name === 'WorkflowRunNotCompletedError') {
50+
if (WorkflowRunNotCompletedError.is(error)) {
4751
return Response.json(
4852
{
4953
...error,
@@ -54,13 +58,18 @@ export default async ({ url }: { req: Request; url: URL }) => {
5458
);
5559
}
5660

57-
if (error.name === 'WorkflowRunFailedError') {
61+
if (WorkflowRunFailedError.is(error)) {
62+
const cause = error.cause;
5863
return Response.json(
5964
{
6065
...error,
6166
name: error.name,
6267
message: error.message,
63-
stack: error.stack,
68+
cause: {
69+
message: cause.message,
70+
stack: cause.stack,
71+
code: cause.code,
72+
},
6473
},
6574
{ status: 400 }
6675
);

0 commit comments

Comments
 (0)