@@ -757,6 +757,39 @@ describe('Job Queries', () => {
757757 expect ( job ! . priority ) . toBe ( 5 )
758758 expect ( job ! . data ) . toEqual ( { foo : 'bar' } )
759759 } )
760+
761+ it ( 'returns null source-tracking fields for a job that was not dead-lettered' , async ( ) => {
762+ await createTestQueue ( 'test-queue' )
763+ const jobId = await sendTestJob ( 'test-queue' , { foo : 'bar' } )
764+
765+ const job = await getJobById ( ctx . connectionString , ctx . schema , 'test-queue' , jobId ! )
766+
767+ expect ( job ! . sourceName ) . toBeNull ( )
768+ expect ( job ! . sourceId ) . toBeNull ( )
769+ expect ( job ! . sourceCreatedOn ) . toBeNull ( )
770+ expect ( job ! . sourceRetryCount ) . toBeNull ( )
771+ } )
772+
773+ it ( 'exposes source-tracking fields for a dead-lettered job' , async ( ) => {
774+ await createTestQueue ( 'test-dlq' )
775+ await createTestQueue ( 'test-queue' , { deadLetter : 'test-dlq' , retryLimit : 0 } )
776+
777+ const jobId = await sendTestJob ( 'test-queue' , { foo : 'bar' } )
778+
779+ // fail() routes the job to the dead letter queue synchronously
780+ await fetchTestJob ( 'test-queue' )
781+ await failTestJob ( 'test-queue' , jobId ! )
782+
783+ // The dead-lettered copy is a new job in the DLQ with its own id
784+ const moved = await fetchTestJob ( 'test-dlq' )
785+ const dlqJob = await getJobById ( ctx . connectionString , ctx . schema , 'test-dlq' , moved ! . id )
786+
787+ expect ( dlqJob ) . not . toBeNull ( )
788+ expect ( dlqJob ! . sourceName ) . toBe ( 'test-queue' )
789+ expect ( dlqJob ! . sourceId ) . toBe ( jobId )
790+ expect ( dlqJob ! . sourceCreatedOn ) . toBeTruthy ( )
791+ expect ( dlqJob ! . sourceRetryCount ) . toBe ( 0 )
792+ } )
760793 } )
761794} )
762795
0 commit comments