Presenter mockPresenter() { Presenter presenter = mock(Presenter.class); final ArrayList<Presenter.OnDestroyListener> onDestroyListeners = new ArrayList<>(); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { onDestroyListeners.add((Presenter.OnDestroyListener) invocation.getArguments()[0]); return null; } }).when(presenter).addOnDestroyListener(any(Presenter.OnDestroyListener.class)); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { for (Presenter.OnDestroyListener listener : onDestroyListeners) listener.onDestroy(); return null; } }).when(presenter).destroy(); return presenter; }
public PresenterStorage mockStorage() { PresenterStorage storage = mock(PresenterStorage.class); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { presenters.add((Presenter) invocation.getArguments()[0]); return null; } }).when(storage).add(any(Presenter.class)); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return "" + presenters.indexOf(invocation.getArguments()[0]); } }).when(storage).getId(any(Presenter.class)); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return presenters.get(Integer.parseInt((String) invocation.getArguments()[0])); } }).when(storage).getPresenter(anyString()); Whitebox.setInternalState(PresenterStorage.class, "INSTANCE", storage); return storage; }
final AbstractFetcher<String, ?> fetcher = mock(AbstractFetcher.class); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable {
@Before public void setUp() { mockStatic(Log.class); mockContext = mock(Context.class); file = mock(File.class); singleWriterMultipleReaderFile = mock(SingleWriterMultipleReaderFile.class); connection = mock(HttpURLConnection.class); finishAnswer = new CountingAnswer(null); failAnswer = new CountingAnswer(null); realTask = new RuleDatabaseUpdateTask(mockContext, null, false); mockTask = mock(RuleDatabaseUpdateTask.class); url = mock(URL.class); mockResolver = mock(ContentResolver.class); try { when(url.openConnection()).thenReturn(connection); when(mockContext.getContentResolver()).thenReturn(mockResolver); doAnswer(finishAnswer).when(singleWriterMultipleReaderFile, "finishWrite", any(FileOutputStream.class)); doAnswer(failAnswer).when(singleWriterMultipleReaderFile, "failWrite", any(FileOutputStream.class)); } catch (Exception e) { e.printStackTrace(); } }
persistedPermissions.add(garbagePermission); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable {
private void mockSuccessCallback() { mockStatic(TokenizationClient.class); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { ((PaymentMethodNonceCallback) invocation.getArguments()[2]).success(new CardNonce()); return null; } }).when(TokenizationClient.class); TokenizationClient.tokenize(any(BraintreeFragment.class), any(PaymentMethodBuilder.class), any(PaymentMethodNonceCallback.class)); }
private void mockFailureCallback() { mockStatic(TokenizationClient.class); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { ((PaymentMethodNonceCallback) invocation.getArguments()[2]).failure(new ErrorWithResponse(422, "")); return null; } }).when(TokenizationClient.class); TokenizationClient.tokenize(any(BraintreeFragment.class), any(PaymentMethodBuilder.class), any(PaymentMethodNonceCallback.class)); } }
private void mockFailureCallback() { mockStatic(TokenizationClient.class); doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocation) throws Throwable { ((PaymentMethodNonceCallback) invocation.getArguments()[2]).failure(new ErrorWithResponse(422, "")); return null; } }).when(TokenizationClient.class); TokenizationClient.tokenize(any(BraintreeFragment.class), any(UnionPayCardBuilder.class), any(PaymentMethodNonceCallback.class)); } }
private void mockConfigurationManager(final Configuration configuration) { mockStatic(ConfigurationManager.class); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { if (invocation.getArguments()[1] != null) { ((ConfigurationListener) invocation.getArguments()[1]).onConfigurationFetched(configuration); } return null; } }).when(ConfigurationManager.class); ConfigurationManager.getConfiguration(any(BraintreeFragment.class), any(ConfigurationListener.class), any(BraintreeResponseListener.class)); }
private void mockConfigurationManager(final Exception exeption) { mockStatic(ConfigurationManager.class); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { if (invocation.getArguments()[2] != null) { ((BraintreeResponseListener<Exception>) invocation.getArguments()[2]).onResponse(exeption); } return null; } }).when(ConfigurationManager.class); ConfigurationManager.getConfiguration(any(BraintreeFragment.class), any(ConfigurationListener.class), any(BraintreeResponseListener.class)); } }
@Test public void fetchIssuingBanks_failure_sendsAnalyticsEvent() { doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[1]; callback.failure(new IOException()); return null; } }).when(mMockApiClient).get(eq("/issuers/ideal"), any(HttpResponseCallback.class)); Ideal.fetchIssuingBanks(mBraintreeFragment, null); verify(mBraintreeFragment).sendAnalyticsEvent(eq("ideal.load.failed")); }
@Test public void startPayment_callsExceptionListenerOnHttpError() throws InvalidArgumentException, JSONException { final Exception expectedException = new Exception(); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[2]; callback.failure(expectedException); 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); } }); verify(mBraintreeFragment).postCallback(eq(expectedException)); }
@Test public void fetchIssuingBanks_postsCallbackToFragment() throws InvalidArgumentException { doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[1]; callback.failure(new IOException()); return null; } }).when(mMockApiClient).get(eq("/issuers/ideal"), any(HttpResponseCallback.class)); Ideal.fetchIssuingBanks(mBraintreeFragment, new BraintreeResponseListener<List<IdealBank>>() { @Override public void onResponse(List<IdealBank> idealBanks) { fail("Success listener called"); } }); verify(mBraintreeFragment).postCallback(any(IOException.class)); }
@Test public void fetchIssuingBanks_postsErrorToListenerOnJsonParsingError() throws InvalidArgumentException { doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[1]; callback.success("gibberish"); return null; } }).when(mMockApiClient).get(eq("/issuers/ideal"), any(HttpResponseCallback.class)); Ideal.fetchIssuingBanks(mBraintreeFragment, new BraintreeResponseListener<List<IdealBank>>() { @Override public void onResponse(List<IdealBank> idealBanks) { fail("Success listener called"); } }); verify(mBraintreeFragment).postCallback(any(JSONException.class)); }
@Test public void startPayment_callsExceptionListenerOnJsonParsingError() throws InvalidArgumentException, JSONException, InterruptedException { putResultIdInPrefs("ideal_payment_id"); final CountDownLatch latch = new CountDownLatch(1); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[1]; callback.success("gibberish"); latch.countDown(); return null; } }).when(mMockApiClient).get(eq("/ideal-payments/ideal_payment_id/status"), any(HttpResponseCallback.class)); Ideal.onActivityResult(mBraintreeFragment, Activity.RESULT_OK); latch.await(); verify(mBraintreeFragment).postCallback(any(JSONException.class)); }
@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 fetchIssuingBanks_success_sendsAnalyticsEvent() { doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { HttpResponseCallback callback = (HttpResponseCallback) invocation.getArguments()[1]; callback.success(stringFromFixture("payment_methods/ideal_issuing_banks.json")); return null; } }).when(mMockApiClient).get(eq("/issuers/ideal"), any(HttpResponseCallback.class)); Ideal.fetchIssuingBanks(mBraintreeFragment, new BraintreeResponseListener<List<IdealBank>>() { @Override public void onResponse(List<IdealBank> idealBanks) { verify(mBraintreeFragment).sendAnalyticsEvent(eq("ideal.load.succeeded")); } }); }
@Test public void testDelegateClass() throws Exception { mockStatic(ABridge.class); final boolean[] called = new boolean[]{false}; doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { called[0] = true; return null; } }).when(ABridge.class, "callObject", eq("android.os.AsyncTask.execute(java.lang.Object[])"), anyObject(), any(Object[].class)); AsyncTaskSubclass sut = new AsyncTaskSubclass(); sut.execute(); assertTrue(called[0]); } }
@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 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); }