Skip to content

Commit 7b1dc07

Browse files
Merge pull request #213 from MihaiCristianCondrea/codex/add-tests-for-applystoredconsent-and-canshowads
Add tests for consent utils preference handling
2 parents a97c7a0 + ab8b87c commit 7b1dc07

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

app/src/test/java/com/d4rk/androidtutorials/java/utils/ConsentUtilsTest.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,50 @@
2424

2525
public class ConsentUtilsTest {
2626

27+
@Test
28+
public void applyStoredConsent_readsPreferencesAndUpdatesFirebase() {
29+
Context context = mock(Context.class);
30+
SharedPreferences prefs = mock(SharedPreferences.class);
31+
FirebaseAnalytics analytics = mock(FirebaseAnalytics.class);
32+
33+
when(context.getString(R.string.key_consent_analytics)).thenReturn("consent_analytics");
34+
when(context.getString(R.string.key_consent_ad_storage)).thenReturn("consent_ad_storage");
35+
when(context.getString(R.string.key_consent_ad_user_data)).thenReturn("consent_ad_user_data");
36+
when(context.getString(R.string.key_consent_ad_personalization)).thenReturn("consent_ad_personalization");
37+
38+
when(prefs.getBoolean("consent_analytics", true)).thenReturn(false);
39+
when(prefs.getBoolean("consent_ad_storage", true)).thenReturn(true);
40+
when(prefs.getBoolean("consent_ad_user_data", true)).thenReturn(false);
41+
when(prefs.getBoolean("consent_ad_personalization", true)).thenReturn(true);
42+
43+
try (MockedStatic<PreferenceManager> prefsStatic = Mockito.mockStatic(PreferenceManager.class);
44+
MockedStatic<FirebaseAnalytics> firebaseStatic = Mockito.mockStatic(FirebaseAnalytics.class)) {
45+
prefsStatic.when(() -> PreferenceManager.getDefaultSharedPreferences(context)).thenReturn(prefs);
46+
firebaseStatic.when(() -> FirebaseAnalytics.getInstance(context)).thenReturn(analytics);
47+
48+
ConsentUtils.applyStoredConsent(context);
49+
50+
verify(prefs).getBoolean("consent_analytics", true);
51+
verify(prefs).getBoolean("consent_ad_storage", true);
52+
verify(prefs).getBoolean("consent_ad_user_data", true);
53+
verify(prefs).getBoolean("consent_ad_personalization", true);
54+
55+
ArgumentCaptor<Map<FirebaseAnalytics.ConsentType, FirebaseAnalytics.ConsentStatus>> captor =
56+
ArgumentCaptor.forClass(Map.class);
57+
verify(analytics).setConsent(captor.capture());
58+
Map<FirebaseAnalytics.ConsentType, FirebaseAnalytics.ConsentStatus> consentMap = captor.getValue();
59+
60+
assertEquals(FirebaseAnalytics.ConsentStatus.DENIED,
61+
consentMap.get(FirebaseAnalytics.ConsentType.ANALYTICS_STORAGE));
62+
assertEquals(FirebaseAnalytics.ConsentStatus.GRANTED,
63+
consentMap.get(FirebaseAnalytics.ConsentType.AD_STORAGE));
64+
assertEquals(FirebaseAnalytics.ConsentStatus.DENIED,
65+
consentMap.get(FirebaseAnalytics.ConsentType.AD_USER_DATA));
66+
assertEquals(FirebaseAnalytics.ConsentStatus.GRANTED,
67+
consentMap.get(FirebaseAnalytics.ConsentType.AD_PERSONALIZATION));
68+
}
69+
}
70+
2771
@Test
2872
public void updateFirebaseConsent_setsExpectedStatuses() {
2973
Context context = mock(Context.class);
@@ -75,4 +119,21 @@ public void canShowAds_readsStoredPreference() {
75119
assertTrue(ConsentUtils.canShowAds(context));
76120
}
77121
}
122+
123+
@Test
124+
public void canShowAds_returnsDefaultWhenPreferenceMissing() {
125+
Context context = mock(Context.class);
126+
SharedPreferences prefs = mock(SharedPreferences.class);
127+
when(context.getString(R.string.key_consent_ad_storage)).thenReturn("consent_ad_storage");
128+
129+
try (MockedStatic<PreferenceManager> prefsStatic = Mockito.mockStatic(PreferenceManager.class)) {
130+
prefsStatic.when(() -> PreferenceManager.getDefaultSharedPreferences(context)).thenReturn(prefs);
131+
132+
when(prefs.getBoolean("consent_ad_storage", true))
133+
.thenAnswer(invocation -> invocation.getArgument(1));
134+
135+
assertTrue(ConsentUtils.canShowAds(context));
136+
verify(prefs).getBoolean("consent_ad_storage", true);
137+
}
138+
}
78139
}

0 commit comments

Comments
 (0)