public void PaymentPost_ValidModelOfPaymentViewModel() { var context = MockData.MoqShopContext(); using (var homeController = new HomeController(MockData.MoqLogger(), context, MockData.MoqEmailSender(), MockData.MoqMyLogger())) { var pvm1 = MockData.GetMoqPaymentViewModel(3, 499.99); var pvm2 = MockData.GetMoqPaymentViewModel(1, 500.00);; // Order does not exists var pvm3 = MockData.GetMoqPaymentViewModel(25, 230.45); var result1 = homeController.PaymentPost(pvm1) as RedirectToActionResult; var result2 = homeController.PaymentPost(pvm2) as RedirectToActionResult; var result3 = homeController.PaymentPost(pvm3) as RedirectToActionResult; var orderPayment1 = context?.Orders?.FirstOrDefault(o => o.OrderId == pvm1.OrderId)?.Payment; var orderPayment2 = context?.Orders?.FirstOrDefault(o => o.OrderId == pvm2.OrderId)?.Payment; var orderPayment3 = context?.Orders?.FirstOrDefault(o => o.OrderId == pvm3.OrderId)?.Payment; Assert.Equal("OrderConfirmation", result1?.ActionName); Assert.Equal("True", result1?.RouteValues["success"]?.ToString()); Assert.Equal("499.99", result1?.RouteValues["price"]?.ToString()); Assert.Equal("3", result1?.RouteValues["id"]?.ToString()); Assert.Equal(orderPayment1, pvm1.SuccessfulPayment); Assert.Equal("OrderConfirmation", result2?.ActionName); Assert.Equal("False", result2?.RouteValues["success"]?.ToString()); Assert.Equal("500", result2?.RouteValues["price"]?.ToString()); Assert.Equal("1", result2?.RouteValues["id"]?.ToString()); Assert.Equal(orderPayment2, pvm2.SuccessfulPayment); Assert.Equal("OrderConfirmation", result3?.ActionName); Assert.Equal("True", result3?.RouteValues["success"]?.ToString()); Assert.Equal("230.45", result3?.RouteValues["price"]?.ToString()); Assert.Equal("25", result3?.RouteValues["id"]?.ToString()); Assert.Null(orderPayment3); Assert.Equal("OrderConfirmation", result1?.ActionName); Assert.Equal("OrderConfirmation", result2?.ActionName); Assert.Equal("OrderConfirmation", result3?.ActionName); } }