@Override public void onCancel() { fragment.postCancelCallback(BraintreeRequestCodes.PAYPAL); } };
fragment.postCancelCallback(BraintreeRequestCodes.LOCAL_PAYMENT); return;
@Test public void onActivityResult_callsCancelListenerOnlyOnceForPayPal() throws InvalidArgumentException { BraintreeFragment fragment = spy(BraintreeFragment.newInstance(mActivity, TOKENIZATION_KEY)); fragment.onActivityResult(BraintreeRequestCodes.PAYPAL, Activity.RESULT_CANCELED, new Intent()); verify(fragment, times(1)).postCancelCallback(BraintreeRequestCodes.PAYPAL); }
@Test public void onActivityResult_postsCancelWhenResultIsCanceled() { BraintreeFragment fragment = mMockFragmentBuilder.build(); Intent intent = new Intent() .setData(Uri.parse("com.braintreepayments.api.test.braintree://onetouch/v1/cancel")); PayPal.onActivityResult(fragment, Activity.RESULT_OK, intent); verify(fragment).postCancelCallback(BraintreeRequestCodes.PAYPAL); }
@Test public void postCancelCallback_postsRequestCodeToListener() throws InvalidArgumentException { BraintreeFragment fragment = BraintreeFragment.newInstance(mActivity, TOKENIZATION_KEY); final AtomicBoolean wasCalled = new AtomicBoolean(false); fragment.addListener(new BraintreeCancelListener() { @Override public void onCancel(int requestCode) { assertEquals(42, requestCode); wasCalled.set(true); } }); fragment.postCancelCallback(42); assertTrue(wasCalled.get()); }
@Test public void addListener_flushesCancelCallback() throws InvalidArgumentException { BraintreeFragment fragment = BraintreeFragment.newInstance(mActivity, TOKENIZATION_KEY); fragment.postCancelCallback(42); fragment.addListener(new BraintreeCancelListener() { @Override public void onCancel(int requestCode) { assertEquals(42, requestCode); mCalled.set(true); } }); assertTrue(mCalled.get()); }
@Test public void onActivityResult_postsCancelWhenIntentIsNull() { BraintreeFragment fragment = mMockFragmentBuilder.build(); PayPal.onActivityResult(fragment, Activity.RESULT_OK, null); verify(fragment).postCancelCallback(BraintreeRequestCodes.PAYPAL); }
@Test public void authorizeAccount_callsCancelListenerWhenCanceled() { final BraintreeFragment fragment = mMockFragmentBuilder.build(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Intent intent = new Intent() .setData(Uri.parse("com.braintreepayments.api.test.braintree://onetouch/v1/cancel")); PayPal.onActivityResult(fragment, Activity.RESULT_OK, intent); return null; } }).when(fragment).browserSwitch(eq(BraintreeRequestCodes.PAYPAL), any(Intent.class)); PayPal.authorizeAccount(fragment); verify(fragment).postCancelCallback(BraintreeRequestCodes.PAYPAL); }
@Test public void removeListener_noCancelReceived() throws InvalidArgumentException { BraintreeFragment fragment = BraintreeFragment.newInstance(mActivity, TOKENIZATION_KEY); BraintreeCancelListener listener = new BraintreeCancelListener() { @Override public void onCancel(int requestCode) { fail("Listener was called"); } }; fragment.addListener(listener); fragment.removeListener(listener); fragment.postCancelCallback(42); }
case Cancel: sendAnalyticsEventForSwitchResult(fragment, request, isAppSwitch, "canceled"); fragment.postCancelCallback(BraintreeRequestCodes.PAYPAL); break; case Success: fragment.postCancelCallback(BraintreeRequestCodes.PAYPAL);
@Test public void checkout_cancelUrlTriggersCancelListener() { final BraintreeFragment fragment = mMockFragmentBuilder .successResponse(stringFromFixture("paypal_hermes_response.json")) .build(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Intent intent = new Intent() .setData(Uri.parse("com.braintreepayments.api.test.braintree://onetouch/v1/cancel")); PayPal.onActivityResult(fragment, Activity.RESULT_OK, intent); return null; } }).when(fragment).browserSwitch(eq(BraintreeRequestCodes.PAYPAL), any(Intent.class)); PayPal.requestOneTimePayment(fragment, new PayPalRequest("1")); verify(fragment).postCancelCallback(BraintreeRequestCodes.PAYPAL); }
@Test public void requestBillingAgreement_cancelUrlTriggersCancelListener() { final BraintreeFragment fragment = mMockFragmentBuilder .successResponse(stringFromFixture("paypal_hermes_response.json")) .build(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Intent intent = new Intent() .setData(Uri.parse("com.braintreepayments.api.test.braintree://onetouch/v1/cancel")); PayPal.onActivityResult(fragment, Activity.RESULT_OK, intent); return null; } }).when(fragment).browserSwitch(eq(BraintreeRequestCodes.PAYPAL), any(Intent.class)); PayPal.requestBillingAgreement(fragment, new PayPalRequest()); verify(fragment).postCancelCallback(BraintreeRequestCodes.PAYPAL); }
@Test public void requestOneTimePayment_customHandlerCancelCallbackIsInvoked() throws InterruptedException { BraintreeFragment fragment = mMockFragmentBuilder .successResponse(stringFromFixture("paypal_hermes_response.json")) .build(); PayPal.requestOneTimePayment(fragment, new PayPalRequest("1"), new PayPalApprovalHandler() { @Override public void handleApproval(Request request, PayPalApprovalCallback paypalApprovalCallback) { paypalApprovalCallback.onCancel(); } }); verify(fragment).postCancelCallback(BraintreeRequestCodes.PAYPAL); }
@Test public void requestBillingAgreement_doesNotCallCancelListenerWhenSuccessful() { final BraintreeFragment fragment = mMockFragmentBuilder .successResponse(stringFromFixture("paypal_hermes_response.json")) .build(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Intent intent = new Intent() .setData(Uri.parse("com.braintreepayments.api.test.braintree://onetouch/v1/success?PayerID=HERMES-SANDBOX-PAYER-ID&paymentId=HERMES-SANDBOX-PAYMENT-ID&ba_token=EC-HERMES-SANDBOX-EC-TOKEN")); PayPal.onActivityResult(fragment, Activity.RESULT_OK, intent); return null; } }).when(fragment).startActivity(any(Intent.class)); mockStatic(TokenizationClient.class); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { ((PaymentMethodNonceCallback) invocation.getArguments()[2]).success(new PayPalAccountNonce()); return null; } }).when(TokenizationClient.class); TokenizationClient.tokenize(any(BraintreeFragment.class), any(PaymentMethodBuilder.class), any(PaymentMethodNonceCallback.class)); PayPal.requestBillingAgreement(fragment, new PayPalRequest()); verify(fragment, never()).postCancelCallback(anyInt()); }
@Test public void requestOneTimePayment_doesNotCallCancelListenerWhenSuccessful() { final BraintreeFragment fragment = mMockFragmentBuilder .successResponse(stringFromFixture("paypal_hermes_response.json")) .build(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Intent intent = new Intent() .setData(Uri.parse("com.braintreepayments.api.test.braintree://onetouch/v1/success?PayerID=HERMES-SANDBOX-PAYER-ID&paymentId=HERMES-SANDBOX-PAYMENT-ID&token=EC-HERMES-SANDBOX-EC-TOKEN")); PayPal.onActivityResult(fragment, Activity.RESULT_OK, intent); return null; } }).when(fragment).startActivity(any(Intent.class)); mockStatic(TokenizationClient.class); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { ((PaymentMethodNonceCallback) invocation.getArguments()[2]).success(new PayPalAccountNonce()); return null; } }).when(TokenizationClient.class); TokenizationClient.tokenize(any(BraintreeFragment.class), any(PaymentMethodBuilder.class), any(PaymentMethodNonceCallback.class)); PayPal.requestOneTimePayment(fragment, new PayPalRequest("1")); verify(fragment, never()).postCancelCallback(anyInt()); }
postCancelCallback(requestCode);
verify(fragment, never()).postCancelCallback(anyInt());