@@ -276,5 +276,117 @@ public async Task TransactionProcessorACLApplicationService_ProcessSaleTransacti
276276 saleResponse . ResponseMessage . ShouldBe ( TestData . GeneralErrorResponseMessage ) ;
277277 saleResponse . ResponseCode . ShouldBe ( TestData . GeneralErrorResponseCode ) ;
278278 }
279+
280+ [ Fact ]
281+ public async Task TransactionProcessorACLApplicationService_ProcessReconciliation_TransactionIsSuccessful ( )
282+ {
283+ IConfigurationRoot configuration = this . SetupMemoryConfiguration ( ) ;
284+ ConfigurationReader . Initialise ( configuration ) ;
285+
286+ Mock < ITransactionProcessorClient > transactionProcessorClient = new Mock < ITransactionProcessorClient > ( ) ;
287+ transactionProcessorClient . Setup ( t => t . PerformTransaction ( It . IsAny < String > ( ) , It . IsAny < SerialisedMessage > ( ) , It . IsAny < CancellationToken > ( ) ) )
288+ . ReturnsAsync ( TestData . SerialisedMessageResponse ) ;
289+ Mock < ISecurityServiceClient > securityServiceClient = new Mock < ISecurityServiceClient > ( ) ;
290+ securityServiceClient . Setup ( s => s . GetToken ( It . IsAny < String > ( ) , It . IsAny < String > ( ) , It . IsAny < CancellationToken > ( ) ) ) . ReturnsAsync ( TestData . TokenResponse ) ;
291+
292+ ITransactionProcessorACLApplicationService applicationService =
293+ new TransactionProcessorACLApplicationService ( transactionProcessorClient . Object , securityServiceClient . Object ) ;
294+
295+ ProcessReconciliationResponse reconciliationResponse = await applicationService . ProcessReconciliation ( TestData . EstateId ,
296+ TestData . MerchantId ,
297+ TestData . TransactionDateTime ,
298+ TestData . DeviceIdentifier ,
299+ TestData . ReconciliationTransactionCount ,
300+ TestData . ReconciliationTransactionValue ,
301+ CancellationToken . None ) ;
302+
303+ reconciliationResponse . ShouldNotBeNull ( ) ;
304+ reconciliationResponse . ResponseMessage . ShouldBe ( TestData . ResponseMessage ) ;
305+ reconciliationResponse . ResponseCode . ShouldBe ( TestData . ResponseCode ) ;
306+ }
307+
308+ [ Fact ]
309+ public async Task TransactionProcessorACLApplicationService_ProcessReconciliation_InvalidOperationExceptionErrorInReconciliation_TransactionIsNotSuccessful ( )
310+ {
311+ IConfigurationRoot configuration = this . SetupMemoryConfiguration ( ) ;
312+ ConfigurationReader . Initialise ( configuration ) ;
313+
314+ Mock < ITransactionProcessorClient > transactionProcessorClient = new Mock < ITransactionProcessorClient > ( ) ;
315+ transactionProcessorClient . Setup ( t => t . PerformTransaction ( It . IsAny < String > ( ) , It . IsAny < SerialisedMessage > ( ) , It . IsAny < CancellationToken > ( ) ) )
316+ . ThrowsAsync ( new Exception ( "Error" , new InvalidOperationException ( TestData . InvalidOperationErrorResponseMessage ) ) ) ;
317+ Mock < ISecurityServiceClient > securityServiceClient = new Mock < ISecurityServiceClient > ( ) ;
318+ securityServiceClient . Setup ( s => s . GetToken ( It . IsAny < String > ( ) , It . IsAny < String > ( ) , It . IsAny < CancellationToken > ( ) ) ) . ReturnsAsync ( TestData . TokenResponse ) ;
319+
320+ ITransactionProcessorACLApplicationService applicationService =
321+ new TransactionProcessorACLApplicationService ( transactionProcessorClient . Object , securityServiceClient . Object ) ;
322+
323+ ProcessReconciliationResponse reconciliationResponse = await applicationService . ProcessReconciliation ( TestData . EstateId ,
324+ TestData . MerchantId ,
325+ TestData . TransactionDateTime ,
326+ TestData . DeviceIdentifier ,
327+ TestData . ReconciliationTransactionCount ,
328+ TestData . ReconciliationTransactionValue ,
329+ CancellationToken . None ) ;
330+
331+ reconciliationResponse . ShouldNotBeNull ( ) ;
332+ reconciliationResponse . ResponseMessage . ShouldBe ( TestData . InvalidOperationErrorResponseMessage ) ;
333+ reconciliationResponse . ResponseCode . ShouldBe ( TestData . InvalidOperationErrorResponseCode ) ;
334+ }
335+
336+ [ Fact ]
337+ public async Task TransactionProcessorACLApplicationService_ProcessReconciliation_HttpRequestExceptionErrorInReconciliation_TransactionIsNotSuccessful ( )
338+ {
339+ IConfigurationRoot configuration = this . SetupMemoryConfiguration ( ) ;
340+ ConfigurationReader . Initialise ( configuration ) ;
341+
342+ Mock < ITransactionProcessorClient > transactionProcessorClient = new Mock < ITransactionProcessorClient > ( ) ;
343+ transactionProcessorClient . Setup ( t => t . PerformTransaction ( It . IsAny < String > ( ) , It . IsAny < SerialisedMessage > ( ) , It . IsAny < CancellationToken > ( ) ) )
344+ . ThrowsAsync ( new Exception ( "Error" , new HttpRequestException ( TestData . HttpRequestErrorResponseMessage ) ) ) ;
345+ Mock < ISecurityServiceClient > securityServiceClient = new Mock < ISecurityServiceClient > ( ) ;
346+ securityServiceClient . Setup ( s => s . GetToken ( It . IsAny < String > ( ) , It . IsAny < String > ( ) , It . IsAny < CancellationToken > ( ) ) ) . ReturnsAsync ( TestData . TokenResponse ) ;
347+
348+ ITransactionProcessorACLApplicationService applicationService =
349+ new TransactionProcessorACLApplicationService ( transactionProcessorClient . Object , securityServiceClient . Object ) ;
350+
351+ ProcessReconciliationResponse reconciliationResponse = await applicationService . ProcessReconciliation ( TestData . EstateId ,
352+ TestData . MerchantId ,
353+ TestData . TransactionDateTime ,
354+ TestData . DeviceIdentifier ,
355+ TestData . ReconciliationTransactionCount ,
356+ TestData . ReconciliationTransactionValue ,
357+ CancellationToken . None ) ;
358+
359+ reconciliationResponse . ShouldNotBeNull ( ) ;
360+ reconciliationResponse . ResponseMessage . ShouldBe ( TestData . HttpRequestErrorResponseMessage ) ;
361+ reconciliationResponse . ResponseCode . ShouldBe ( TestData . HttpRequestErrorResponseCode ) ;
362+ }
363+
364+ [ Fact ]
365+ public async Task TransactionProcessorACLApplicationService_ProcessReconciliation_OtherExceptionErrorInReconciliation_TransactionIsNotSuccessful ( )
366+ {
367+ IConfigurationRoot configuration = this . SetupMemoryConfiguration ( ) ;
368+ ConfigurationReader . Initialise ( configuration ) ;
369+
370+ Mock < ITransactionProcessorClient > transactionProcessorClient = new Mock < ITransactionProcessorClient > ( ) ;
371+ transactionProcessorClient . Setup ( t => t . PerformTransaction ( It . IsAny < String > ( ) , It . IsAny < SerialisedMessage > ( ) , It . IsAny < CancellationToken > ( ) ) )
372+ . ThrowsAsync ( new Exception ( "Error" , new Exception ( TestData . GeneralErrorResponseMessage ) ) ) ;
373+ Mock < ISecurityServiceClient > securityServiceClient = new Mock < ISecurityServiceClient > ( ) ;
374+ securityServiceClient . Setup ( s => s . GetToken ( It . IsAny < String > ( ) , It . IsAny < String > ( ) , It . IsAny < CancellationToken > ( ) ) ) . ReturnsAsync ( TestData . TokenResponse ) ;
375+
376+ ITransactionProcessorACLApplicationService applicationService =
377+ new TransactionProcessorACLApplicationService ( transactionProcessorClient . Object , securityServiceClient . Object ) ;
378+
379+ ProcessReconciliationResponse reconciliationResponse = await applicationService . ProcessReconciliation ( TestData . EstateId ,
380+ TestData . MerchantId ,
381+ TestData . TransactionDateTime ,
382+ TestData . DeviceIdentifier ,
383+ TestData . ReconciliationTransactionCount ,
384+ TestData . ReconciliationTransactionValue ,
385+ CancellationToken . None ) ;
386+
387+ reconciliationResponse . ShouldNotBeNull ( ) ;
388+ reconciliationResponse . ResponseMessage . ShouldBe ( TestData . GeneralErrorResponseMessage ) ;
389+ reconciliationResponse . ResponseCode . ShouldBe ( TestData . GeneralErrorResponseCode ) ;
390+ }
279391 }
280392}
0 commit comments