public ActionResult Rendering() { var paymentPickerViewModel = new PaymentPickerViewModel(); var basket = _transactionLibraryInternal.GetBasket(false).PurchaseOrder; var shippingCountry = basket.GetShippingAddress(Constants.DefaultShipmentAddressName).Country; paymentPickerViewModel.ShippingCountry = shippingCountry.Name; var availablePaymentMethods = _transactionLibraryInternal.GetPaymentMethods(shippingCountry); var existingPayment = basket.Payments.FirstOrDefault(); paymentPickerViewModel.SelectedPaymentMethodId = existingPayment != null ? existingPayment.PaymentMethod.PaymentMethodId : -1; foreach (var availablePaymentMethod in availablePaymentMethods) { var option = new SelectListItem(); decimal feePercent = availablePaymentMethod.FeePercent; var fee = availablePaymentMethod.GetFeeForCurrency(basket.BillingCurrency); var formattedFee = new Money((fee == null ? 0 : fee.Fee), basket.BillingCurrency); option.Text = String.Format(" {0} ({1} + {2}%)", availablePaymentMethod.Name, formattedFee, feePercent.ToString("0.00")); option.Value = availablePaymentMethod.PaymentMethodId.ToString(); option.Selected = availablePaymentMethod.PaymentMethodId == paymentPickerViewModel.SelectedPaymentMethodId; paymentPickerViewModel.AvailablePaymentMethods.Add(option); } return(View(paymentPickerViewModel)); }
public void Rendering_Returns_View_With_Valid_Model() { // Arrange var purchaseOrder = Substitute.For <PurchaseOrder>(); purchaseOrder.GetShippingAddress(Constants.DefaultShipmentAddressName).Returns(new OrderAddress() { Country = new Country() { Name = "Denmark" } }); var paymentMethods = new List <PaymentMethod>(); paymentMethods.Add(new PaymentMethod() { Name = "PayPal" }); _transactionLibraryInternal.GetPaymentMethods( purchaseOrder.GetShippingAddress(Constants.DefaultShipmentAddressName).Country) .Returns(paymentMethods); var basket = Substitute.For <Basket>(purchaseOrder); _transactionLibraryInternal.GetBasket(false).Returns(basket); // Act var result = _controller.Rendering(); // Assert var viewResult = result as ViewResult; var model = viewResult != null ? viewResult.Model as PaymentPickerViewModel : null; Assert.NotNull(model); Assert.NotNull(viewResult); Assert.NotNull(model.SelectedPaymentMethodId); Assert.True(model.AvailablePaymentMethods.Count == 1); _transactionLibraryInternal.Received().GetPaymentMethods(purchaseOrder.GetShippingAddress(Constants.DefaultShipmentAddressName).Country); }
public virtual PaymentPickerViewModel GetViewModel() { var paymentPickerViewModel = new PaymentPickerViewModel(); var basket = _transactionLibraryInternal.GetBasket().PurchaseOrder; var shippingCountry = UCommerce.Api.TransactionLibrary.GetCountries().SingleOrDefault(x => x.Name == "Germany"); paymentPickerViewModel.ShippingCountry = shippingCountry.Name; var availablePaymentMethods = _transactionLibraryInternal.GetPaymentMethods(shippingCountry); var existingPayment = basket.Payments.FirstOrDefault(); paymentPickerViewModel.SelectedPaymentMethodId = existingPayment != null ? existingPayment.PaymentMethod.PaymentMethodId : -1; var priceGroup = SiteContext.Current.CatalogContext.CurrentPriceGroup; foreach (var availablePaymentMethod in availablePaymentMethods) { var option = new SelectListItem(); decimal feePercent = availablePaymentMethod.FeePercent; var fee = availablePaymentMethod.GetFeeForPriceGroup(priceGroup); var formattedFee = new Money(fee == null ? 0 : fee.Fee, basket.BillingCurrency); option.Text = String.Format(" {0} ({1} + {2}%)", availablePaymentMethod.Name, formattedFee, feePercent.ToString("0.00")); option.Value = availablePaymentMethod.PaymentMethodId.ToString(); option.Selected = availablePaymentMethod.PaymentMethodId == paymentPickerViewModel.SelectedPaymentMethodId; paymentPickerViewModel.AvailablePaymentMethods.Add(option); } _transactionLibraryInternal.ExecuteBasketPipeline(); paymentPickerViewModel.NextStepUrl = GetNextStepUrl(nextStepId); paymentPickerViewModel.PreviousStepUrl = GetPreviousStepUrl(previousStepId); return(paymentPickerViewModel); }