44 * @group unit/batch/class/batchprocessor
55 */
66
7- import { BatchProcessingError , BatchProcessor , EventType } from '../../src' ;
7+ import {
8+ BatchProcessingError ,
9+ BatchProcessingOptions ,
10+ BatchProcessor ,
11+ EventType ,
12+ } from '../../src' ;
813import {
914 sqsRecordFactory ,
1015 kinesisRecordFactory ,
@@ -17,10 +22,14 @@ import {
1722 asyncKinesisRecordHandler ,
1823 dynamodbRecordHandler ,
1924 asyncDynamodbRecordHandler ,
25+ handlerWithContext ,
2026} from '../../tests/helpers/handlers' ;
27+ import { helloworldContext as dummyContext } from '../../../commons/src/samples/resources/contexts' ;
28+ import { Context } from 'aws-lambda' ;
2129
2230describe ( 'Class: BatchProcessor' , ( ) => {
2331 const ENVIRONMENT_VARIABLES = process . env ;
32+ const options : BatchProcessingOptions = { context : dummyContext } ;
2433
2534 beforeEach ( ( ) => {
2635 jest . clearAllMocks ( ) ;
@@ -418,4 +427,58 @@ describe('Class: BatchProcessor', () => {
418427 ) ;
419428 } ) ;
420429 } ) ;
430+
431+ describe ( 'Batch processing with Lambda context' , ( ) => {
432+ test ( 'Batch processing when context is provided and handler accepts' , async ( ) => {
433+ // Prepare
434+ const firstRecord = sqsRecordFactory ( 'success' ) ;
435+ const secondRecord = sqsRecordFactory ( 'success' ) ;
436+ const records = [ firstRecord , secondRecord ] ;
437+ const processor = new BatchProcessor ( EventType . SQS ) ;
438+
439+ // Act
440+ processor . register ( records , handlerWithContext , options ) ;
441+ const processedMessages = await processor . process ( ) ;
442+
443+ // Assess
444+ expect ( processedMessages ) . toStrictEqual ( [
445+ [ 'success' , firstRecord . body , firstRecord ] ,
446+ [ 'success' , secondRecord . body , secondRecord ] ,
447+ ] ) ;
448+ } ) ;
449+
450+ test ( 'Batch processing when context is provided and handler does not accept' , async ( ) => {
451+ // Prepare
452+ const firstRecord = sqsRecordFactory ( 'success' ) ;
453+ const secondRecord = sqsRecordFactory ( 'success' ) ;
454+ const records = [ firstRecord , secondRecord ] ;
455+ const processor = new BatchProcessor ( EventType . SQS ) ;
456+
457+ // Act
458+ processor . register ( records , sqsRecordHandler , options ) ;
459+ const processedMessages = await processor . process ( ) ;
460+
461+ // Assess
462+ expect ( processedMessages ) . toStrictEqual ( [
463+ [ 'success' , firstRecord . body , firstRecord ] ,
464+ [ 'success' , secondRecord . body , secondRecord ] ,
465+ ] ) ;
466+ } ) ;
467+
468+ test ( 'Batch processing when malformed context is provided and handler attempts to use' , async ( ) => {
469+ // Prepare
470+ const firstRecord = sqsRecordFactory ( 'success' ) ;
471+ const secondRecord = sqsRecordFactory ( 'success' ) ;
472+ const records = [ firstRecord , secondRecord ] ;
473+ const processor = new BatchProcessor ( EventType . SQS ) ;
474+ const badContext = { foo : 'bar' } ;
475+ const badOptions = { context : badContext as unknown as Context } ;
476+
477+ // Act
478+ processor . register ( records , handlerWithContext , badOptions ) ;
479+ await expect ( processor . process ( ) ) . rejects . toThrowError (
480+ BatchProcessingError
481+ ) ;
482+ } ) ;
483+ } ) ;
421484} ) ;
0 commit comments