public void Sale_WithValidationError()
{
TransactionRequest request = new TransactionRequest
{
CreditCard = new TransactionCreditCardRequest
{
ExpirationMonth = "05",
ExpirationYear = "2010"
},
BillingAddress = new AddressRequest
{
CountryName = "zzzzzz",
CountryCodeAlpha2 = "zz",
CountryCodeAlpha3 = "zzz",
CountryCodeNumeric = "000"
},
ShippingAddress = new AddressRequest
{
CountryName = "zzzzz",
CountryCodeAlpha2 = "zz",
CountryCodeAlpha3 = "zzz",
CountryCodeNumeric = "000"
}
};
Result<Transaction> result = gateway.Transaction.Sale(request);
Assert.IsFalse(result.IsSuccess());
Assert.IsNull(result.Target);
Assert.IsNull(result.Transaction);
Assert.IsNull(result.CreditCardVerification);
Assert.AreEqual(ValidationErrorCode.TRANSACTION_AMOUNT_IS_REQUIRED, result.Errors.ForObject("Transaction").OnField("Amount")[0].Code);
Assert.AreEqual(
ValidationErrorCode.ADDRESS_COUNTRY_CODE_ALPHA2_IS_NOT_ACCEPTED,
result.Errors.ForObject("Transaction").ForObject("Billing").OnField("CountryCodeAlpha2")[0].Code
);
Assert.AreEqual(
ValidationErrorCode.ADDRESS_COUNTRY_CODE_ALPHA3_IS_NOT_ACCEPTED,
result.Errors.ForObject("Transaction").ForObject("Billing").OnField("CountryCodeAlpha3")[0].Code
);
Assert.AreEqual(
ValidationErrorCode.ADDRESS_COUNTRY_CODE_NUMERIC_IS_NOT_ACCEPTED,
result.Errors.ForObject("Transaction").ForObject("Billing").OnField("CountryCodeNumeric")[0].Code
);
Assert.AreEqual(
ValidationErrorCode.ADDRESS_COUNTRY_NAME_IS_NOT_ACCEPTED,
result.Errors.ForObject("Transaction").ForObject("Billing").OnField("CountryName")[0].Code
);
Dictionary<string, string> parameters = result.Parameters;
Assert.IsFalse(parameters.ContainsKey("transaction[amount]"));
Assert.AreEqual("05", parameters["transaction[credit_card][expiration_month]"]);
Assert.AreEqual("2010", parameters["transaction[credit_card][expiration_year]"]);
}