Skip to content

Commit daa88b6

Browse files
committed
Fix tests
1 parent 888e0f3 commit daa88b6

1 file changed

Lines changed: 59 additions & 34 deletions

File tree

src/integration-tests/WorkerRegistration.test.ts

Lines changed: 59 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ describe("SDK Worker Registration", () => {
3535
test("worker() function registers workers in global registry", async () => {
3636
const taskName = `sdk_test_basic_worker_${Date.now()}`;
3737

38-
// Define worker using worker() function
3938
worker({ taskDefName: taskName })(
4039
async function basicWorker() {
4140
return {
@@ -58,7 +57,6 @@ describe("SDK Worker Registration", () => {
5857

5958
let workerExecuted = false;
6059

61-
// Define worker using worker() function
6260
worker({ taskDefName: taskName, pollInterval: 100 })(
6361
async function autoDiscoverWorker(task: Task) {
6462
workerExecuted = true;
@@ -81,19 +79,24 @@ describe("SDK Worker Registration", () => {
8179
expect(handler.workerCount).toBe(1);
8280
expect(handler.running).toBe(false);
8381

84-
// Register workflow
82+
// Start workers BEFORE registering workflow
83+
handler.startWorkers();
84+
85+
// Wait a bit for workers to start polling
86+
await new Promise(resolve => setTimeout(resolve, 100));
87+
88+
// Register workflow - pass workflow input to task
8589
await executor.registerWorkflow(true, {
8690
name: workflowName,
8791
version: 1,
8892
ownerEmail: "developers@orkes.io",
89-
tasks: [simpleTask(taskName, taskName, {})],
90-
inputParameters: [],
93+
tasks: [simpleTask(taskName, taskName, {
94+
testData: "${workflow.input.testData}",
95+
})],
96+
inputParameters: ["testData"],
9197
outputParameters: {},
9298
timeoutSeconds: 0,
9399
});
94-
95-
// Start workers
96-
handler.startWorkers();
97100
expect(handler.running).toBe(true);
98101
expect(handler.runningWorkerCount).toBe(1);
99102

@@ -128,7 +131,8 @@ describe("SDK Worker Registration", () => {
128131
expect(firstTask?.taskType).toBe(taskName);
129132
expect(firstTask?.status).toBe("COMPLETED");
130133
expect(firstTask?.outputData?.message).toBe("Auto-discovered worker executed");
131-
expect(firstTask?.outputData?.inputReceived).toEqual({ testData: "hello" });
134+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
135+
expect((firstTask?.outputData?.inputReceived as any)?.testData).toBe("hello");
132136

133137
// Stop workers
134138
await handler.stopWorkers();
@@ -144,7 +148,6 @@ describe("SDK Worker Registration", () => {
144148
let executionCount = 0;
145149
const executionTimes: number[] = [];
146150

147-
// Define worker with concurrency
148151
worker({ taskDefName: taskName, concurrency: 3, pollInterval: 100 })(
149152
async function concurrentWorker(task: Task) {
150153
const startTime = Date.now();
@@ -170,6 +173,12 @@ describe("SDK Worker Registration", () => {
170173
scanForDecorated: true,
171174
});
172175

176+
// Start workers BEFORE registering workflow
177+
handler.startWorkers();
178+
179+
// Wait a bit for workers to start polling
180+
await new Promise(resolve => setTimeout(resolve, 100));
181+
173182
// Register workflow with multiple tasks
174183
await executor.registerWorkflow(true, {
175184
name: workflowName,
@@ -185,8 +194,6 @@ describe("SDK Worker Registration", () => {
185194
timeoutSeconds: 0,
186195
});
187196

188-
handler.startWorkers();
189-
190197
const { workflowId } = await executor.executeWorkflow(
191198
{
192199
name: workflowName,
@@ -219,7 +226,6 @@ describe("SDK Worker Registration", () => {
219226
const taskName = `sdk_test_domain_${Date.now()}`;
220227
const domain = "test_domain";
221228

222-
// Define worker with domain
223229
worker({ taskDefName: taskName, domain, pollInterval: 100 })(
224230
async function domainWorker() {
225231
return {
@@ -239,16 +245,22 @@ describe("SDK Worker Registration", () => {
239245
const registeredWorkers = getRegisteredWorkers();
240246
expect(registeredWorkers[0]?.domain).toBe(domain);
241247

248+
// Start workers and verify they start properly
242249
handler.startWorkers();
250+
expect(handler.running).toBe(true);
251+
252+
// Wait a bit for workers to initialize
253+
await new Promise(resolve => setTimeout(resolve, 100));
254+
243255
await handler.stopWorkers();
256+
expect(handler.running).toBe(false);
244257
});
245258

246259
test("NonRetryableException marks task as terminal failure", async () => {
247260
const client = await clientPromise;
248261
const taskName = `sdk_test_non_retryable_${Date.now()}`;
249262
const workflowName = `sdk_test_non_retryable_wf_${Date.now()}`;
250263

251-
// Define worker that throws NonRetryableException
252264
worker({ taskDefName: taskName, pollInterval: 100 })(
253265
async function nonRetryableWorker(task: Task) {
254266
const shouldFail = task.inputData?.shouldFail;
@@ -269,19 +281,25 @@ describe("SDK Worker Registration", () => {
269281
scanForDecorated: true,
270282
});
271283

272-
// Register workflow
284+
// Start workers BEFORE registering workflow (important!)
285+
handler.startWorkers();
286+
287+
// Wait a bit for workers to start polling
288+
await new Promise(resolve => setTimeout(resolve, 100));
289+
290+
// Register workflow with input parameter
273291
await executor.registerWorkflow(true, {
274292
name: workflowName,
275293
version: 1,
276294
ownerEmail: "developers@orkes.io",
277-
tasks: [simpleTask(taskName, taskName, {})],
278-
inputParameters: [],
295+
tasks: [simpleTask(taskName, taskName, {
296+
shouldFail: "${workflow.input.shouldFail}",
297+
})],
298+
inputParameters: ["shouldFail"],
279299
outputParameters: {},
280300
timeoutSeconds: 0,
281301
});
282302

283-
handler.startWorkers();
284-
285303
// Execute workflow with shouldFail flag
286304
const { workflowId } = await executor.executeWorkflow(
287305
{
@@ -313,7 +331,7 @@ describe("SDK Worker Registration", () => {
313331
expect(firstTask?.reasonForIncompletion).toContain("Order not found - terminal error");
314332

315333
await handler.stopWorkers();
316-
}, 30000);
334+
}, 60000);
317335

318336
test("regular exceptions mark task for retry", async () => {
319337
const client = await clientPromise;
@@ -345,7 +363,13 @@ describe("SDK Worker Registration", () => {
345363
scanForDecorated: true,
346364
});
347365

348-
// Register workflow with retry policy
366+
// Start workers BEFORE registering workflow (important!)
367+
handler.startWorkers();
368+
369+
// Wait a bit for workers to start polling
370+
await new Promise(resolve => setTimeout(resolve, 100));
371+
372+
// Register workflow - task will be retried on failure
349373
await executor.registerWorkflow(true, {
350374
name: workflowName,
351375
version: 1,
@@ -356,8 +380,6 @@ describe("SDK Worker Registration", () => {
356380
timeoutSeconds: 0,
357381
});
358382

359-
handler.startWorkers();
360-
361383
const { workflowId } = await executor.executeWorkflow(
362384
{
363385
name: workflowName,
@@ -376,7 +398,7 @@ describe("SDK Worker Registration", () => {
376398
executor,
377399
workflowId,
378400
"COMPLETED",
379-
30000
401+
60000
380402
);
381403

382404
expect(workflowStatus.status).toBe("COMPLETED");
@@ -387,7 +409,7 @@ describe("SDK Worker Registration", () => {
387409
expect(firstTask?.outputData?.message).toBe("Success on retry");
388410

389411
await handler.stopWorkers();
390-
}, 30000);
412+
}, 90000); // Increased timeout for retry test
391413

392414
test("event listeners receive lifecycle events", async () => {
393415
const client = await clientPromise;
@@ -396,7 +418,6 @@ describe("SDK Worker Registration", () => {
396418

397419
const events: string[] = [];
398420

399-
// Define worker
400421
worker({ taskDefName: taskName, pollInterval: 100 })(
401422
async function eventWorker() {
402423
return {
@@ -428,6 +449,12 @@ describe("SDK Worker Registration", () => {
428449
eventListeners: [eventListener],
429450
});
430451

452+
// Start workers BEFORE registering workflow
453+
handler.startWorkers();
454+
455+
// Wait a bit for workers to start polling
456+
await new Promise(resolve => setTimeout(resolve, 100));
457+
431458
// Register workflow
432459
await executor.registerWorkflow(true, {
433460
name: workflowName,
@@ -439,8 +466,6 @@ describe("SDK Worker Registration", () => {
439466
timeoutSeconds: 0,
440467
});
441468

442-
handler.startWorkers();
443-
444469
const { workflowId } = await executor.executeWorkflow(
445470
{
446471
name: workflowName,
@@ -475,7 +500,6 @@ describe("SDK Worker Registration", () => {
475500
let worker1Executed = false;
476501
let worker2Executed = false;
477502

478-
// Define first worker
479503
worker({ taskDefName: taskName1, pollInterval: 100 })(
480504
async function worker1() {
481505
worker1Executed = true;
@@ -486,7 +510,6 @@ describe("SDK Worker Registration", () => {
486510
}
487511
);
488512

489-
// Define second worker
490513
worker({ taskDefName: taskName2, pollInterval: 100 })(
491514
async function worker2() {
492515
worker2Executed = true;
@@ -504,6 +527,12 @@ describe("SDK Worker Registration", () => {
504527

505528
expect(handler.workerCount).toBe(2);
506529

530+
// Start workers BEFORE registering workflow
531+
handler.startWorkers();
532+
533+
// Wait a bit for workers to start polling
534+
await new Promise(resolve => setTimeout(resolve, 100));
535+
507536
// Register workflow with both tasks
508537
await executor.registerWorkflow(true, {
509538
name: workflowName,
@@ -517,8 +546,6 @@ describe("SDK Worker Registration", () => {
517546
outputParameters: {},
518547
timeoutSeconds: 0,
519548
});
520-
521-
handler.startWorkers();
522549
expect(handler.runningWorkerCount).toBe(2);
523550

524551
const { workflowId } = await executor.executeWorkflow(
@@ -604,7 +631,6 @@ describe("SDK Worker Registration", () => {
604631
const decoratedTaskName = `sdk_test_decorated_${Date.now()}`;
605632
const manualTaskName = `sdk_test_manual_${Date.now()}`;
606633

607-
// Define decorated worker
608634
worker({ taskDefName: decoratedTaskName, pollInterval: 100 })(
609635
async function decoratedWorker() {
610636
return {
@@ -642,7 +668,6 @@ describe("SDK Worker Registration", () => {
642668
test("worker with custom configuration options", async () => {
643669
const taskName = `sdk_test_custom_config_${Date.now()}`;
644670

645-
// Define worker with custom configuration
646671
worker({
647672
taskDefName: taskName,
648673
concurrency: 5,

0 commit comments

Comments
 (0)