/** * Method to extract an error for an individual field, e.g. creditCard, customer, etc. * * @param field Name of the field desired, expected to be in camelCase. * @return {@link BraintreeError} for the field searched, or {@code null} if not found. */ @Nullable public BraintreeError errorFor(String field) { BraintreeError returnError; if (mFieldErrors != null) { for (BraintreeError error : mFieldErrors) { if (error.getField().equals(field)) { return error; } else if (error.getFieldErrors() != null) { returnError = error.errorFor(field); if (returnError != null) { return returnError; } } } } return null; }
/** * Method to extract an error for an individual field, e.g. creditCard, customer, etc. * * @param field Name of the field desired, expected to be in camelCase. * @return {@link BraintreeError} for the field searched, or {@code null} if not found. */ @Nullable public BraintreeError errorFor(String field) { BraintreeError returnError; if (mFieldErrors != null) { for (BraintreeError error : mFieldErrors) { if (error.getField().equals(field)) { return error; } else if (error.getFieldErrors() != null) { returnError = error.errorFor(field); if (returnError != null) { return returnError; } } } } return null; }
@Override public void onError(Exception error) { assertEquals("CVV verification failed", ((ErrorWithResponse) error).errorFor("creditCard").getFieldErrors().get(0).getMessage()); countDownLatch.countDown(); } });
@Override public void onError(Exception error) { assertEquals("Postal code verification failed", ((ErrorWithResponse) error).errorFor("creditCard").errorFor("billingAddress") .getFieldErrors().get(0).getMessage()); countDownLatch.countDown(); } });
@Override public void onError(Exception error) { assertEquals("Country code (alpha3) is not an accepted country", ((ErrorWithResponse) error).errorFor("creditCard").errorFor("billingAddress") .getFieldErrors().get(0).getMessage()); countDownLatch.countDown(); } });
@Test public void constructor_canHandleMultipleCategories() { String errors = stringFromFixture("errors/complex_error_response.json"); ErrorWithResponse errorWithResponse = new ErrorWithResponse(422, errors); assertEquals(3, errorWithResponse.errorFor("creditCard").getFieldErrors().size()); assertEquals("is invalid", errorWithResponse.errorFor("customer").getMessage()); assertEquals(0, errorWithResponse.errorFor("customer").getFieldErrors().size()); }
@Test public void parcelsCorrectly() throws JSONException { JSONObject errorResponse = new JSONObject(stringFromFixture("errors/credit_card_error_response.json")); List<BraintreeError> errors = BraintreeError.fromJsonArray(errorResponse.getJSONArray("fieldErrors")); assertEquals(1, errors.size()); BraintreeError error = errors.get(0); Parcel parcel = Parcel.obtain(); error.writeToParcel(parcel, 0); parcel.setDataPosition(0); BraintreeError parceled = BraintreeError.CREATOR.createFromParcel(parcel); assertEquals(error.getField(), parceled.getField()); assertEquals(error.getMessage(), parceled.getMessage()); assertEquals(error.getFieldErrors().size(), parceled.getFieldErrors().size()); }
@Test public void graphQLErrors_parcelCorrectly() throws Exception { JSONObject errorResponse = new JSONObject(stringFromFixture("errors/graphql/credit_card_error.json")); List<BraintreeError> errors = BraintreeError.fromGraphQLJsonArray(errorResponse.getJSONArray("errors")); assertEquals(1, errors.size()); BraintreeError error = errors.get(0); Parcel parcel = Parcel.obtain(); error.writeToParcel(parcel, 0); parcel.setDataPosition(0); BraintreeError parceled = BraintreeError.CREATOR.createFromParcel(parcel); assertEquals(error.getField(), parceled.getField()); assertEquals(error.getMessage(), parceled.getMessage()); assertEquals(error.getFieldErrors().size(), parceled.getFieldErrors().size()); } }