public void TicketController_Throws_BadRequestException_When_Payment_Is_Zero() { // Arrange TicketRepository ticketRepository = new TicketRepository(null); PaymentWorker paymentWorker = new PaymentWorker(ticketRepository); TicketController controller = new TicketController(paymentWorker); GSPRPaymentRequest paymentRequest = new GSPRPaymentRequest() { BillNo = 123, BillAmount = 0, PaymentTypeId = "100", TipAmount = 0, TransactionID = 123, LocationIdentifier = "ABC", PaymentTypeName = "3rd_party", GlancePayPOSPaymentID = 123 }; MockControllerRequest(controller); // Act controller.Validate(paymentRequest); HttpResponseMessage result = controller.Post(paymentRequest) as HttpResponseMessage; }
public HttpResponseMessage Post([FromBody] GSPRPaymentRequest paymentRequest) { if (Logger != null) { Logger.LogDebug("Start."); } if (!ModelState.IsValid) { string errorMessage = ModelState.FirstErrorMessage(); if (Logger != null) { Logger.LogError(string.Format("{0} Transaction ID: {1}", errorMessage, paymentRequest.TransactionID)); } throw new BadRequestException(errorMessage.ToCombinedErrorMessage(paymentRequest.TransactionID)); } ThirdPartyPayment payment = new ThirdPartyPayment(paymentRequest.BillAmount, paymentRequest.TipAmount) { TicketId = paymentRequest.BillNo, TransactionId = paymentRequest.TransactionID, LocationIdentifier = paymentRequest.LocationIdentifier, Amount = paymentRequest.BillAmount, Tip = paymentRequest.TipAmount, TenderTypeId = paymentRequest.PaymentTypeId, Type = paymentRequest.PaymentTypeName }; HostingEnvironment.QueueBackgroundWorkItem(async cancelationToken => { if (Logger != null) { Logger.LogDebug("Background worker start."); } try { await paymentWorker.Make3PartyPaymentAsync(payment.LocationIdentifier, payment.TransactionId, payment.TicketId, payment.Amount, payment.Tip, payment.TenderTypeId, payment.Type); } catch (Exception ex) { //TODO: add logging and exception handling if (Logger != null) { Logger.LogError("Cannot add payment: " + ex.Message, ex); } } if (Logger != null) { Logger.LogDebug("Background worker end."); } }); if (Logger != null) { Logger.LogDebug("End."); } return(new HttpResponseMessage(HttpStatusCode.OK)); }