Skip to content

Commit c56e525

Browse files
test: add ReviewHelper unit tests
1 parent c5f9060 commit c56e525

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.d4rk.androidtutorials.java.utils;
2+
3+
import android.app.Activity;
4+
5+
import com.google.android.gms.tasks.Task;
6+
import com.google.android.gms.tasks.Tasks;
7+
import com.google.android.play.core.review.ReviewInfo;
8+
import com.google.android.play.core.review.ReviewManager;
9+
import com.google.android.play.core.review.ReviewManagerFactory;
10+
11+
import org.junit.Test;
12+
import org.mockito.MockedStatic;
13+
14+
import static org.mockito.Mockito.*;
15+
16+
/**
17+
* Tests for {@link ReviewHelper}.
18+
*/
19+
public class ReviewHelperTest {
20+
21+
@Test
22+
public void launchInAppReviewIfEligible_doesNothingWhenSessionCountLessThanThree() {
23+
Activity activity = mock(Activity.class);
24+
Runnable callback = mock(Runnable.class);
25+
26+
try (MockedStatic<ReviewManagerFactory> factory = mockStatic(ReviewManagerFactory.class)) {
27+
ReviewHelper.launchInAppReviewIfEligible(activity, 2, false, callback);
28+
29+
factory.verifyNoInteractions();
30+
verifyNoInteractions(callback);
31+
}
32+
}
33+
34+
@Test
35+
public void launchInAppReviewIfEligible_doesNothingWhenPromptedBefore() {
36+
Activity activity = mock(Activity.class);
37+
Runnable callback = mock(Runnable.class);
38+
39+
try (MockedStatic<ReviewManagerFactory> factory = mockStatic(ReviewManagerFactory.class)) {
40+
ReviewHelper.launchInAppReviewIfEligible(activity, 5, true, callback);
41+
42+
factory.verifyNoInteractions();
43+
verifyNoInteractions(callback);
44+
}
45+
}
46+
47+
@Test
48+
public void launchInAppReviewIfEligible_launchesReviewWhenEligible() {
49+
Activity activity = mock(Activity.class);
50+
Runnable callback = mock(Runnable.class);
51+
ReviewManager reviewManager = mock(ReviewManager.class);
52+
ReviewInfo reviewInfo = mock(ReviewInfo.class);
53+
54+
Task<ReviewInfo> requestTask = Tasks.forResult(reviewInfo);
55+
Task<Void> launchTask = Tasks.forResult(null);
56+
57+
when(reviewManager.requestReviewFlow()).thenReturn(requestTask);
58+
when(reviewManager.launchReviewFlow(activity, reviewInfo)).thenReturn(launchTask);
59+
60+
try (MockedStatic<ReviewManagerFactory> factory = mockStatic(ReviewManagerFactory.class)) {
61+
factory.when(() -> ReviewManagerFactory.create(activity)).thenReturn(reviewManager);
62+
63+
ReviewHelper.launchInAppReviewIfEligible(activity, 3, false, callback);
64+
65+
factory.verify(() -> ReviewManagerFactory.create(activity));
66+
verify(reviewManager).launchReviewFlow(activity, reviewInfo);
67+
verify(callback).run();
68+
}
69+
}
70+
71+
@Test
72+
public void forceLaunchInAppReview_alwaysTriggersLaunch() {
73+
Activity activity = mock(Activity.class);
74+
ReviewManager reviewManager = mock(ReviewManager.class);
75+
ReviewInfo reviewInfo = mock(ReviewInfo.class);
76+
77+
Task<ReviewInfo> requestTask = Tasks.forResult(reviewInfo);
78+
Task<Void> launchTask = Tasks.forResult(null);
79+
80+
when(reviewManager.requestReviewFlow()).thenReturn(requestTask);
81+
when(reviewManager.launchReviewFlow(activity, reviewInfo)).thenReturn(launchTask);
82+
83+
try (MockedStatic<ReviewManagerFactory> factory = mockStatic(ReviewManagerFactory.class)) {
84+
factory.when(() -> ReviewManagerFactory.create(activity)).thenReturn(reviewManager);
85+
86+
ReviewHelper.forceLaunchInAppReview(activity);
87+
88+
factory.verify(() -> ReviewManagerFactory.create(activity));
89+
verify(reviewManager).launchReviewFlow(activity, reviewInfo);
90+
}
91+
}
92+
}
93+

0 commit comments

Comments
 (0)