@@ -84,6 +84,58 @@ await this.pact.VerifyAsync(async ctx =>
8484 } ) ;
8585 }
8686
87+ [ Fact ]
88+ public async Task GetOrdersAsync_WhenCalled_ReturnsMultipleOrders ( )
89+ {
90+ var expected1 = new OrderDto ( 1 , OrderStatus . Pending , new DateTimeOffset ( 2023 , 6 , 28 , 12 , 13 , 14 , TimeSpan . FromHours ( 1 ) ) ) ;
91+ var expected2 = new OrderDto ( 2 , OrderStatus . Pending , new DateTimeOffset ( 2023 , 6 , 29 , 12 , 13 , 14 , TimeSpan . FromHours ( 1 ) ) ) ;
92+
93+ this . pact
94+ . UponReceiving ( "a request for multiple orders by id" )
95+ . Given ( "orders with ids {ids} exist" , new Dictionary < string , string > { [ "ids" ] = "1,2" } )
96+ . WithRequest ( HttpMethod . Get , "/api/orders/many/1,2" )
97+ . WithHeader ( "Accept" , "application/json" )
98+ . WillRespond ( )
99+ . WithStatus ( HttpStatusCode . OK )
100+ . WithJsonBody ( Match . ArrayContains ( new dynamic [ ]
101+ {
102+ new
103+ {
104+ Id = Match . Integer ( expected1 . Id ) ,
105+ Status = Match . Regex ( expected1 . Status . ToString ( ) , string . Join ( "|" , Enum . GetNames < OrderStatus > ( ) ) ) ,
106+ Date = Match . Type ( expected1 . Date . ToString ( "O" ) )
107+ } ,
108+ new
109+ {
110+ Id = Match . Integer ( expected2 . Id ) ,
111+ Status = Match . Regex ( expected2 . Status . ToString ( ) , string . Join ( "|" , Enum . GetNames < OrderStatus > ( ) ) ) ,
112+ Date = Match . Type ( expected2 . Date . ToString ( "O" ) )
113+ } ,
114+ } ) ) ;
115+
116+ await this . pact . VerifyAsync ( async ctx =>
117+ {
118+ this . mockFactory
119+ . Setup ( f => f . CreateClient ( "Orders" ) )
120+ . Returns ( ( ) => new HttpClient
121+ {
122+ BaseAddress = ctx . MockServerUri ,
123+ DefaultRequestHeaders =
124+ {
125+ Accept = { MediaTypeWithQualityHeaderValue . Parse ( "application/json" ) }
126+ }
127+ } ) ;
128+
129+ var client = new OrdersClient ( this . mockFactory . Object ) ;
130+
131+ OrderDto [ ] orders = await client . GetOrdersAsync ( new [ ] { 1 , 2 } ) ;
132+
133+ orders . Should ( ) . HaveCount ( 2 ) ;
134+ orders [ 0 ] . Should ( ) . Be ( expected1 ) ;
135+ orders [ 1 ] . Should ( ) . Be ( expected2 ) ;
136+ } ) ;
137+ }
138+
87139 [ Fact ]
88140 public async Task GetOrderAsync_UnknownOrder_ReturnsNotFound ( )
89141 {
0 commit comments