public void ShouldValidateViewModelOnSubmit(string merchantId, string currency, string cardHolderName, string cardNumber, string securityCode, int monthExpired, int yearExpired, string expectedError) { // arrange var model = new OnlinePaymentViewModel { MerchantId = new Guid(merchantId), Amount = 1000, Currency = currency, RedirectUrl = "http://test.com", CardHolderName = cardHolderName, CardNumber = cardNumber, SecurityCode = securityCode, MonthExpired = monthExpired, YearExpired = yearExpired }; var bankCard = new BankCard("123", "0000", "EVGENY SHMANEV", "12345", 1, 2020); _bankCardService.Setup(x => x.FindBankCard("12345")).Returns(bankCard); var merchant = new Merchant("merchant", "test@com", "pass", new Guid("E5310F8F-117B-4D60-8239-39A42A94ADC9"), "store", "contact"); var account = merchant.AddAccount("9876543210", "USD"); _merchantService.Setup(x => x.FindMerchant(merchant.MerchantId)).Returns(merchant); // act var result = _controller.Payment(model).Result; // assert result.ShouldBeOfType <ViewResult>(); _controller.ModelState.IsValid.ShouldBeFalse(); _controller.ModelState.ShouldContain(x => x.Value.Errors.Any(error => error.ErrorMessage == expectedError)); }
public void ShouldRedirectToStoreAfterPayment(string merchantId, string currency, string cardHolderName, string cardNumber, string securityCode, int monthExpired, int yearExpired, string expectedError) { // arrange var model = new OnlinePaymentViewModel { MerchantId = new Guid(merchantId), Amount = 1000, Currency = currency, RedirectUrl = "http://test.com", CardHolderName = cardHolderName, CardNumber = cardNumber, SecurityCode = securityCode, MonthExpired = monthExpired, YearExpired = yearExpired }; var customer = new Individual("customer", "test@com", "pass", "Evgeny", "Shmanev"); var customerAccount = customer.AddAccount("11111111", "EUR"); customerAccount.BankCard = new BankCard("123", "0000", "EVGENY SHMANEV", "12345", 1, 2020); _bankCardService.Setup(x => x.FindBankCard("12345")).Returns(customerAccount.BankCard); var merchant = new Merchant("merchant", "test@com", "pass", new Guid("E5310F8F-117B-4D60-8239-39A42A94ADC9"), "store", "contact"); var merchantAccount = merchant.AddAccount("222222222", "USD"); _merchantService.Setup(x => x.FindMerchant(merchant.MerchantId)).Returns(merchant); // act var result = _controller.Payment(model).Result; // assert _controller.ModelState.IsValid.ShouldBeTrue(); _accountService.Verify(x => x.TransferMoney(customerAccount, merchantAccount, model.Amount, AmountConversionMode.TargetToSource, $"Online payment on {merchant.MerchantName}.")); result.ShouldBeOfType <RedirectResult>() .Url.ShouldBe("http://test.com?status=success"); }