Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package com.d4rk.androidtutorials.java.domain.help;

import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import com.d4rk.androidtutorials.java.data.repository.HelpRepository;
import com.google.android.play.core.review.ReviewInfo;

import org.junit.Test;

Expand Down Expand Up @@ -43,4 +45,40 @@ public void invokePropagatesRepositoryException() {
assertThrows(IllegalStateException.class, () -> useCase.invoke(listener));
verify(repository).requestReviewFlow(listener);
}

@Test
public void invokePropagatesSuccessCallback() {
HelpRepository repository = mock(HelpRepository.class);
HelpRepository.OnReviewInfoListener listener = mock(HelpRepository.OnReviewInfoListener.class);
RequestReviewFlowUseCase useCase = new RequestReviewFlowUseCase(repository);
ReviewInfo info = mock(ReviewInfo.class);
doAnswer(invocation -> {
HelpRepository.OnReviewInfoListener callback = invocation.getArgument(0);
callback.onSuccess(info);
return null;
}).when(repository).requestReviewFlow(listener);

useCase.invoke(listener);

verify(repository).requestReviewFlow(listener);
verify(listener).onSuccess(info);
}

@Test
public void invokePropagatesFailureCallback() {
HelpRepository repository = mock(HelpRepository.class);
HelpRepository.OnReviewInfoListener listener = mock(HelpRepository.OnReviewInfoListener.class);
RequestReviewFlowUseCase useCase = new RequestReviewFlowUseCase(repository);
Exception error = new Exception("fail");
doAnswer(invocation -> {
HelpRepository.OnReviewInfoListener callback = invocation.getArgument(0);
callback.onFailure(error);
return null;
}).when(repository).requestReviewFlow(listener);

useCase.invoke(listener);

verify(repository).requestReviewFlow(listener);
verify(listener).onFailure(error);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package com.d4rk.androidtutorials.java.domain.startup;

import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import android.app.Activity;

import com.d4rk.androidtutorials.java.data.repository.StartupRepository;
import com.google.android.ump.FormError;

import org.junit.Test;

Expand Down Expand Up @@ -47,6 +49,25 @@ public void invokeAllowsNullErrorHandler() {
verify(repository).loadConsentForm(activity, null);
}

@Test
public void invokePropagatesFormErrorCallback() {
StartupRepository repository = mock(StartupRepository.class);
Activity activity = mock(Activity.class);
StartupRepository.OnFormError onError = mock(StartupRepository.OnFormError.class);
LoadConsentFormUseCase useCase = new LoadConsentFormUseCase(repository);
FormError formError = mock(FormError.class);
doAnswer(invocation -> {
StartupRepository.OnFormError callback = invocation.getArgument(1);
callback.onFormError(formError);
return null;
}).when(repository).loadConsentForm(activity, onError);

useCase.invoke(activity, onError);

verify(repository).loadConsentForm(activity, onError);
verify(onError).onFormError(formError);
}

@Test
public void invokePropagatesRepositoryException() {
StartupRepository repository = mock(StartupRepository.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.d4rk.androidtutorials.java.domain.startup;

import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
Expand All @@ -9,6 +10,7 @@

import com.d4rk.androidtutorials.java.data.repository.StartupRepository;
import com.google.android.ump.ConsentRequestParameters;
import com.google.android.ump.FormError;

import org.junit.Test;

Expand Down Expand Up @@ -53,6 +55,47 @@ public void invokeSupportsNullCallbacks() {
verify(repository).requestConsentInfoUpdate(activity, params, null, null);
}

@Test
public void invokePropagatesSuccessCallback() {
StartupRepository repository = mock(StartupRepository.class);
Activity activity = mock(Activity.class);
ConsentRequestParameters params = mock(ConsentRequestParameters.class);
Runnable onSuccess = mock(Runnable.class);
StartupRepository.OnFormError onError = mock(StartupRepository.OnFormError.class);
RequestConsentInfoUseCase useCase = new RequestConsentInfoUseCase(repository);
doAnswer(invocation -> {
Runnable callback = invocation.getArgument(2);
callback.run();
return null;
}).when(repository).requestConsentInfoUpdate(activity, params, onSuccess, onError);

useCase.invoke(activity, params, onSuccess, onError);

verify(repository).requestConsentInfoUpdate(activity, params, onSuccess, onError);
verify(onSuccess).run();
}

@Test
public void invokePropagatesFailureCallback() {
StartupRepository repository = mock(StartupRepository.class);
Activity activity = mock(Activity.class);
ConsentRequestParameters params = mock(ConsentRequestParameters.class);
Runnable onSuccess = mock(Runnable.class);
StartupRepository.OnFormError onError = mock(StartupRepository.OnFormError.class);
RequestConsentInfoUseCase useCase = new RequestConsentInfoUseCase(repository);
FormError error = mock(FormError.class);
doAnswer(invocation -> {
StartupRepository.OnFormError callback = invocation.getArgument(3);
callback.onFormError(error);
return null;
}).when(repository).requestConsentInfoUpdate(activity, params, onSuccess, onError);

useCase.invoke(activity, params, onSuccess, onError);

verify(repository).requestConsentInfoUpdate(activity, params, onSuccess, onError);
verify(onError).onFormError(error);
}

@Test
public void invokePropagatesRepositoryException() {
StartupRepository repository = mock(StartupRepository.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.d4rk.androidtutorials.java.domain.support;

import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
Expand All @@ -22,6 +23,23 @@ public void invokeDelegatesToRepository() {
verify(repository).initBillingClient(onConnected);
}

@Test
public void invokePropagatesConnectionCallback() {
SupportRepository repository = mock(SupportRepository.class);
Runnable onConnected = mock(Runnable.class);
InitBillingClientUseCase useCase = new InitBillingClientUseCase(repository);
doAnswer(invocation -> {
Runnable callback = invocation.getArgument(0);
callback.run();
return null;
}).when(repository).initBillingClient(onConnected);

useCase.invoke(onConnected);

verify(repository).initBillingClient(onConnected);
verify(onConnected).run();
}

@Test
public void invokeAllowsNullCallback() {
SupportRepository repository = mock(SupportRepository.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.d4rk.androidtutorials.java.domain.support;

import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import com.android.billingclient.api.ProductDetails;
import com.d4rk.androidtutorials.java.data.repository.SupportRepository;

import org.junit.Test;
Expand Down Expand Up @@ -40,6 +42,27 @@ public void invokeSupportsEmptyProductIds() {
verify(repository).queryProductDetails(ids, listener);
}

@Test
public void invokePropagatesListenerResults() {
SupportRepository repository = mock(SupportRepository.class);
List<String> productIds = List.of("product");
SupportRepository.OnProductDetailsListener listener =
mock(SupportRepository.OnProductDetailsListener.class);
QueryProductDetailsUseCase useCase = new QueryProductDetailsUseCase(repository);
ProductDetails detail = mock(ProductDetails.class);
List<ProductDetails> details = List.of(detail);
doAnswer(invocation -> {
SupportRepository.OnProductDetailsListener callback = invocation.getArgument(1);
callback.onProductDetailsRetrieved(details);
return null;
}).when(repository).queryProductDetails(productIds, listener);

useCase.invoke(productIds, listener);

verify(repository).queryProductDetails(productIds, listener);
verify(listener).onProductDetailsRetrieved(details);
}

@Test
public void invokeSupportsNullArguments() {
SupportRepository repository = mock(SupportRepository.class);
Expand Down