1- import { PublishBatchCommand , SNSClient } from "@aws-sdk/client-sns" ;
1+ import {
2+ PublishBatchCommand ,
3+ SNSClient ,
4+ type PublishBatchInput ,
5+ } from "@aws-sdk/client-sns" ;
26import { publisherClient } from "./publisher_client" ;
37
48const mockSend = jest . fn ( ) ;
@@ -15,6 +19,13 @@ describe("batchPublishMessages", () => {
1519 send : mockSend . mockResolvedValue ( { Failed : [ ] } ) ,
1620 } ) ,
1721 ) ;
22+
23+ jest . mocked ( PublishBatchCommand ) . mockImplementation (
24+ jest . fn ( ) . mockImplementation ( ( input : PublishBatchInput ) => ( {
25+ __input : input ,
26+ } ) ) ,
27+ ) ;
28+
1829 const messages = [
1930 { id : "1" , body : "message 1" } ,
2031 { id : "2" , body : "message 2" } ,
@@ -27,16 +38,99 @@ describe("batchPublishMessages", () => {
2738 { id : "9" , body : "message 9" } ,
2839 { id : "10" , body : "message 10" } ,
2940 { id : "11" , body : "message 11" } ,
41+ { id : "12" , body : "message 12" } ,
42+ { id : "13" , body : "message 13" } ,
43+ { id : "14" , body : "message 14" } ,
44+ { id : "15" , body : "message 15" } ,
45+ { id : "16" , body : "message 16" } ,
46+ { id : "17" , body : "message 17" } ,
47+ { id : "18" , body : "message 18" } ,
48+ { id : "19" , body : "message 19" } ,
49+ { id : "20" , body : "message 20" } ,
50+ { id : "21" , body : "message 21" } ,
3051 ] ;
3152
3253 const result = await publisherClient . batchPublishMessages (
3354 "topic" ,
3455 messages ,
3556 ) ;
3657
37- expect ( mockSend ) . toHaveBeenCalledTimes ( 2 ) ;
58+ expect ( mockSend ) . toHaveBeenCalledTimes ( 3 ) ;
59+ const {
60+ mock : {
61+ calls : [ firstCallArguments ] ,
62+ } ,
63+ } = mockSend as {
64+ mock : { calls : Array < Array < { __input : PublishBatchInput } > > } ;
65+ } ;
66+ const {
67+ mock : {
68+ calls : [ , secondCallArguments ] ,
69+ } ,
70+ } = mockSend as {
71+ mock : { calls : Array < Array < { __input : PublishBatchInput } > > } ;
72+ } ;
73+ const {
74+ mock : {
75+ calls : [ , , thirdCallArguments ] ,
76+ } ,
77+ } = mockSend as {
78+ mock : { calls : Array < Array < { __input : PublishBatchInput } > > } ;
79+ } ;
80+ expect ( firstCallArguments ) . toBeDefined ( ) ;
81+ if ( firstCallArguments !== undefined ) {
82+ expect ( firstCallArguments [ 0 ] ) . toBeDefined ( ) ;
83+ if ( firstCallArguments [ 0 ] !== undefined ) {
84+ expect ( firstCallArguments [ 0 ] . __input ) . toEqual ( {
85+ TopicArn : "topic" ,
86+ PublishBatchRequestEntries : [
87+ { Id : "1" , Message : "message 1" } ,
88+ { Id : "2" , Message : "message 2" } ,
89+ { Id : "3" , Message : "message 3" } ,
90+ { Id : "4" , Message : "message 4" } ,
91+ { Id : "5" , Message : "message 5" } ,
92+ { Id : "6" , Message : "message 6" } ,
93+ { Id : "7" , Message : "message 7" } ,
94+ { Id : "8" , Message : "message 8" } ,
95+ { Id : "9" , Message : "message 9" } ,
96+ { Id : "10" , Message : "message 10" } ,
97+ ] ,
98+ } ) ;
99+ }
100+ }
101+ expect ( secondCallArguments ) . toBeDefined ( ) ;
102+ if ( secondCallArguments !== undefined ) {
103+ expect ( secondCallArguments [ 0 ] ) . toBeDefined ( ) ;
104+ if ( secondCallArguments [ 0 ] !== undefined ) {
105+ expect ( secondCallArguments [ 0 ] . __input ) . toEqual ( {
106+ TopicArn : "topic" ,
107+ PublishBatchRequestEntries : [
108+ { Id : "11" , Message : "message 11" } ,
109+ { Id : "12" , Message : "message 12" } ,
110+ { Id : "13" , Message : "message 13" } ,
111+ { Id : "14" , Message : "message 14" } ,
112+ { Id : "15" , Message : "message 15" } ,
113+ { Id : "16" , Message : "message 16" } ,
114+ { Id : "17" , Message : "message 17" } ,
115+ { Id : "18" , Message : "message 18" } ,
116+ { Id : "19" , Message : "message 19" } ,
117+ { Id : "20" , Message : "message 20" } ,
118+ ] ,
119+ } ) ;
120+ }
121+ }
122+ expect ( thirdCallArguments ) . toBeDefined ( ) ;
123+ if ( thirdCallArguments !== undefined ) {
124+ expect ( thirdCallArguments [ 0 ] ) . toBeDefined ( ) ;
125+ if ( thirdCallArguments [ 0 ] !== undefined ) {
126+ expect ( thirdCallArguments [ 0 ] . __input ) . toEqual ( {
127+ TopicArn : "topic" ,
128+ PublishBatchRequestEntries : [ { Id : "21" , Message : "message 21" } ] ,
129+ } ) ;
130+ }
131+ }
38132 expect ( result . failedMessages . length ) . toBe ( 0 ) ;
39- expect ( result . messagesSent ) . toBe ( 11 ) ;
133+ expect ( result . messagesSent ) . toBe ( 21 ) ;
40134 } ) ;
41135
42136 test ( "should report failures" , async ( ) => {
0 commit comments