@@ -1087,4 +1087,75 @@ describe("Polling state", () => {
10871087
10881088 expect ( runner . isPolling ) . toBe ( false ) ;
10891089 } ) ;
1090+
1091+ test ( "handles undefined concurrency by using default" , async ( ) => {
1092+ const mockClient = createMockClient ( ) ;
1093+
1094+ // Create worker with undefined concurrency
1095+ const args : RunnerArgs = {
1096+ worker : {
1097+ taskDefName : "test-undefined-concurrency" ,
1098+ execute : async ( ) => ( {
1099+ status : "COMPLETED" ,
1100+ outputData : { result : "ok" } ,
1101+ } ) ,
1102+ // concurrency is intentionally undefined
1103+ } ,
1104+ options : {
1105+ pollInterval : 10 ,
1106+ workerID : "test-worker" ,
1107+ // concurrency is also undefined here
1108+ } ,
1109+ logger : mockLogger ,
1110+ client : mockClient ,
1111+ } ;
1112+
1113+ const mockTask : Task = {
1114+ taskId : "task-1" ,
1115+ workflowInstanceId : "workflow-1" ,
1116+ status : "IN_PROGRESS" ,
1117+ taskType : "test-undefined-concurrency" ,
1118+ inputData : { } ,
1119+ } as Task ;
1120+
1121+ ( TaskResource . batchPoll as jest . MockedFunction < typeof TaskResource . batchPoll > )
1122+ . mockResolvedValueOnce ( {
1123+ data : [ mockTask ] ,
1124+ request : { } as Request ,
1125+ response : { } as Response ,
1126+ } as Awaited < ReturnType < typeof TaskResource . batchPoll > > )
1127+ . mockResolvedValue ( {
1128+ data : [ ] ,
1129+ request : { } as Request ,
1130+ response : { } as Response ,
1131+ } as Awaited < ReturnType < typeof TaskResource . batchPoll > > ) ;
1132+
1133+ ( TaskResource . updateTask as jest . MockedFunction < typeof TaskResource . updateTask > )
1134+ . mockResolvedValue ( {
1135+ data : null ,
1136+ request : { } as Request ,
1137+ response : { } as Response ,
1138+ } as Awaited < ReturnType < typeof TaskResource . updateTask > > ) ;
1139+
1140+ const runner = new TaskRunner ( args ) ;
1141+ activeRunners . push ( runner ) ;
1142+
1143+ runner . startPolling ( ) ;
1144+
1145+ // Wait for polling cycle
1146+ await new Promise ( resolve => setTimeout ( resolve , 50 ) ) ;
1147+
1148+ await runner . stopPolling ( ) ;
1149+
1150+ // Verify batchPoll was called with a valid count (should be 1, the default concurrency)
1151+ expect ( TaskResource . batchPoll ) . toHaveBeenCalled ( ) ;
1152+ const batchPollCall = ( TaskResource . batchPoll as jest . MockedFunction < typeof TaskResource . batchPoll > ) . mock . calls [ 0 ] ;
1153+ const queryParams = batchPollCall ?. [ 0 ] ?. query ;
1154+
1155+ // Verify count is a valid number, not NaN
1156+ expect ( queryParams ?. count ) . toBeDefined ( ) ;
1157+ expect ( typeof queryParams ?. count ) . toBe ( 'number' ) ;
1158+ expect ( Number . isFinite ( queryParams ?. count ) ) . toBe ( true ) ;
1159+ expect ( queryParams ?. count ) . toBeGreaterThan ( 0 ) ;
1160+ } ) ;
10901161} ) ;
0 commit comments