@Test public void onActivityResult_returnsResultToFragment() throws InvalidArgumentException, JSONException, InterruptedException { final CountDownLatch latch = new CountDownLatch(1); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[2]; callback.success(stringFromFixture("payment_methods/local_payment_response.json")); latch.countDown(); return null; } }).when(mMockHttpClient).post(eq("/v1/payment_methods/paypal_accounts"), any(String.class), any(HttpResponseCallback.class)); LocalPayment.onActivityResult(mBraintreeFragment, Activity.RESULT_OK, getSuccessResponseIntent()); latch.await(); ArgumentCaptor<LocalPaymentResult> captor = ArgumentCaptor.forClass(LocalPaymentResult.class); verify(mBraintreeFragment).postCallback(captor.capture()); LocalPaymentResult capturedResult = captor.getValue(); assertEquals("e11c9c39-d6a4-0305-791d-bfe680ef2d5d", capturedResult.getNonce()); }
@Test public void onActivityResult_tokenize_sendsAnalyticsEvent() throws JSONException, InterruptedException { final CountDownLatch latch = new CountDownLatch(1); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[2]; callback.success(stringFromFixture("error_response.json")); latch.countDown(); return null; } }).when(mMockHttpClient).post(eq("/v1/paypal_hermes/create_payment_resource"), any(String.class), any(HttpResponseCallback.class)); LocalPayment.startPayment(mBraintreeFragment, getIdealLocalPaymentRequest(), new BraintreeResponseListener<LocalPaymentRequest>() { @Override public void onResponse(LocalPaymentRequest localPaymentRequest) { LocalPayment.approvePayment(mBraintreeFragment, localPaymentRequest); } }); latch.await(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[2]; callback.success(stringFromFixture("payment_methods/local_payment_response.json")); return null; } }).when(mMockHttpClient).post(eq("/v1/payment_methods/paypal_accounts"), any(String.class), any(HttpResponseCallback.class)); LocalPayment.onActivityResult(mBraintreeFragment, Activity.RESULT_OK, getSuccessResponseIntent()); verify(mBraintreeFragment).sendAnalyticsEvent(eq("ideal.local-payment.tokenize.succeeded")); }
@Test public void onActivityResult_cancel_sendsAnalyticsEvent() throws JSONException, InterruptedException { final CountDownLatch latch = new CountDownLatch(1); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[2]; callback.success(stringFromFixture("error_response.json")); latch.countDown(); return null; } }).when(mMockHttpClient).post(eq("/v1/paypal_hermes/create_payment_resource"), any(String.class), any(HttpResponseCallback.class)); LocalPayment.startPayment(mBraintreeFragment, getIdealLocalPaymentRequest(), new BraintreeResponseListener<LocalPaymentRequest>() { @Override public void onResponse(LocalPaymentRequest localPaymentRequest) { LocalPayment.approvePayment(mBraintreeFragment, localPaymentRequest); } }); latch.await(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[2]; callback.success(stringFromFixture("payment_methods/local_payment_response.json")); return null; } }).when(mMockHttpClient).post(eq("/v1/payment_methods/paypal_accounts"), any(String.class), any(HttpResponseCallback.class)); LocalPayment.onActivityResult(mBraintreeFragment, Activity.RESULT_OK, getCancelResponseIntent()); verify(mBraintreeFragment).sendAnalyticsEvent(eq("ideal.local-payment.webswitch.canceled")); }
break; case BraintreeRequestCodes.LOCAL_PAYMENT: LocalPayment.onActivityResult(this, resultCode, data); break; case BraintreeRequestCodes.GOOGLE_PAYMENT: