public async Task ProcessFormAsync_UsesExistingIfMatchingFound() { var newPaymentMethod = new PaymentMethod { CardNumber = "1234", CardholderName = "testcardholdername" }; var existingPaymentMethods = new List<PaymentMethod> { new PaymentMethod { Id = "testId", CardNumber = "1234", CardholderName = "testcardholdername" } }; var checkoutDataRepository = new MockCheckoutDataRepository(); checkoutDataRepository.GetAllPaymentMethodsAsyncDelegate = () => Task.FromResult<ICollection<PaymentMethod>>(new ReadOnlyCollection<PaymentMethod>(existingPaymentMethods)); var target = new PaymentMethodUserControlViewModel(checkoutDataRepository); target.PaymentMethod = newPaymentMethod; await target.ProcessFormAsync(); Assert.AreEqual("testId", target.PaymentMethod.Id); }
public async Task ProcessFormAsync_SavesPaymentMethodIfNoMatchingFound() { var savePaymentMethodCalled = false; var newPaymentMethod = new PaymentMethod { CardNumber = "1234", CardholderName = "testcardholdername" }; var existingPaymentMethods = new List<PaymentMethod>(); var checkoutDataRepository = new MockCheckoutDataRepository(); checkoutDataRepository.GetAllPaymentMethodsAsyncDelegate = () => Task.FromResult<ICollection<PaymentMethod>>(new Collection<PaymentMethod>(existingPaymentMethods)); checkoutDataRepository.SavePaymentMethodAsyncDelegate = paymentMethod => { savePaymentMethodCalled = true; Assert.AreEqual("testcardholdername", paymentMethod.CardholderName); return Task.Delay(0); }; var target = new PaymentMethodUserControlViewModel(checkoutDataRepository); target.PaymentMethod = newPaymentMethod; await target.ProcessFormAsync(); Assert.IsTrue(savePaymentMethodCalled); }