Skip to content

Commit a422f63

Browse files
committed
Merge branch 'release/5.42.0'
2 parents 03ada31 + 98c8a98 commit a422f63

24 files changed

+861
-240
lines changed

app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,20 +1445,11 @@ class BrowserTabViewModelTest {
14451445
}
14461446

14471447
@Test
1448-
fun whenRegisterDaxBubbleCtaShownThenFirePixel() {
1448+
fun whenRegisterDaxBubbleCtaDismissedThenRegisterInDatabase() {
14491449
val cta = DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore)
14501450
testee.ctaViewState.value = BrowserTabViewModel.CtaViewState(cta = cta)
14511451

1452-
testee.registerDaxBubbleCtaShown()
1453-
verify(mockPixel).fire(cta.shownPixel!!, cta.pixelShownParameters())
1454-
}
1455-
1456-
@Test
1457-
fun whenRegisterDaxBubbleCtaShownThenRegisterInDatabase() {
1458-
val cta = DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore)
1459-
testee.ctaViewState.value = BrowserTabViewModel.CtaViewState(cta = cta)
1460-
1461-
testee.registerDaxBubbleCtaShown()
1452+
testee.registerDaxBubbleCtaDismissed()
14621453
verify(mockDismissedCtaDao).insert(DismissedCta(cta.ctaId))
14631454
}
14641455

app/src/androidTest/java/com/duckduckgo/app/cta/ui/CtaTest.kt

Lines changed: 59 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import org.junit.Assert.*
3030
import org.junit.Before
3131
import org.junit.Test
3232
import org.mockito.Mock
33-
import org.mockito.Mockito.mock
3433
import org.mockito.MockitoAnnotations
3534
import java.util.concurrent.TimeUnit
3635

@@ -75,12 +74,6 @@ class CtaTest {
7574
assertTrue(testee.pixelShownParameters().isEmpty())
7675
}
7776

78-
@Test
79-
fun whenCtaIsSurveyReturnNullDialogCta() {
80-
val testee = HomePanelCta.Survey(Survey("abc", "http://example.com", 1, Survey.Status.SCHEDULED))
81-
assertNull(testee.createDialogCta(mock(FragmentActivity::class.java)))
82-
}
83-
8477
@Test
8578
fun whenCtaIsAddWidgetAutoReturnEmptyOkParameters() {
8679
val testee = HomePanelCta.AddWidgetAuto
@@ -99,11 +92,6 @@ class CtaTest {
9992
assertTrue(testee.pixelShownParameters().isEmpty())
10093
}
10194

102-
@Test
103-
fun whenCtaIsAddWidgetAutoReturnNullDialogCta() {
104-
val testee = HomePanelCta.AddWidgetAuto
105-
assertNull(testee.createDialogCta(mock(FragmentActivity::class.java)))
106-
}
10795

10896
@Test
10997
fun whenCtaIsAddWidgetInstructionsReturnEmptyOkParameters() {
@@ -123,12 +111,6 @@ class CtaTest {
123111
assertTrue(testee.pixelShownParameters().isEmpty())
124112
}
125113

126-
@Test
127-
fun whenCtaIsAddWidgetInstructionsReturnNullDialogCta() {
128-
val testee = HomePanelCta.AddWidgetInstructions
129-
assertNull(testee.createDialogCta(mock(FragmentActivity::class.java)))
130-
}
131-
132114
@Test
133115
fun whenCtaIsBubbleTypeReturnCorrectCancelParameters() {
134116
val testee = DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore)
@@ -163,6 +145,49 @@ class CtaTest {
163145
assertEquals(expectedValue, value[CTA_SHOWN])
164146
}
165147

148+
@Test
149+
fun whenAddCtaToHistoryThenReturnCorrectValue() {
150+
whenever(mockOnboardingStore.onboardingDialogJourney).thenReturn(null)
151+
whenever(mockAppInstallStore.installTimestamp).thenReturn(System.currentTimeMillis())
152+
153+
val testee = DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore)
154+
val value = testee.addCtaToHistory("test")
155+
assertEquals("test:0", value)
156+
}
157+
158+
@Test
159+
fun whenAddCtaToHistoryOnDay3ThenReturnCorrectValue() {
160+
whenever(mockOnboardingStore.onboardingDialogJourney).thenReturn(null)
161+
whenever(mockAppInstallStore.installTimestamp).thenReturn(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(3))
162+
163+
val testee = DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore)
164+
val value = testee.addCtaToHistory("test")
165+
assertEquals("test:3", value)
166+
}
167+
168+
@Test
169+
fun whenAddCtaToHistoryOnDay4ThenReturn3AsDayValue() {
170+
whenever(mockOnboardingStore.onboardingDialogJourney).thenReturn(null)
171+
whenever(mockAppInstallStore.installTimestamp).thenReturn(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(4))
172+
173+
val testee = DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore)
174+
val value = testee.addCtaToHistory("test")
175+
assertEquals("test:3", value)
176+
}
177+
178+
@Test
179+
fun whenAddCtaToHistoryContainsHistoryThenConcatenateNewValue() {
180+
val ctaHistory = "s:0-t:1"
181+
whenever(mockOnboardingStore.onboardingDialogJourney).thenReturn(ctaHistory)
182+
whenever(mockAppInstallStore.installTimestamp).thenReturn(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1))
183+
184+
val testee = DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore)
185+
val value = testee.addCtaToHistory("test")
186+
val expectedValue = "$ctaHistory-test:1"
187+
188+
assertEquals(expectedValue, value)
189+
}
190+
166191
@Test
167192
fun whenCtaIsBubbleTypeThenConcatenateJourneyStoredValueInPixel() {
168193
val existingJourney = "s:0-t:1"
@@ -175,6 +200,21 @@ class CtaTest {
175200
assertEquals(expectedValue, value[CTA_SHOWN])
176201
}
177202

203+
@Test
204+
fun whenCanSendPixelAndCtaNotPartOfHistoryThenReturnTrue() {
205+
whenever(mockOnboardingStore.onboardingDialogJourney).thenReturn("s:0")
206+
val testee = DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore)
207+
assertTrue(testee.canSendShownPixel())
208+
}
209+
210+
@Test
211+
fun whenCanSendPixelAndCtaIsPartOfHistoryThenReturnFalse() {
212+
whenever(mockOnboardingStore.onboardingDialogJourney).thenReturn("e:0")
213+
214+
val testee = DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore)
215+
assertFalse(testee.canSendShownPixel())
216+
}
217+
178218
@Test
179219
fun whenCtaIsDialogTypeReturnCorrectCancelParameters() {
180220
val testee = DaxDialogCta.DaxSerpCta(mockOnboardingStore, mockAppInstallStore)
@@ -235,7 +275,7 @@ class CtaTest {
235275
}
236276

237277
@Test
238-
fun whenTwoMajorTrackersBlockedReturnThemWithMultipleString() {
278+
fun whenTwoMajorTrackersBlockedReturnThemWithZeroString() {
239279
val trackers = listOf(
240280
TrackingEvent("facebook.com", "facebook.com", blocked = true, entity = TestEntity("Facebook", "Facebook", 9.0), categories = null),
241281
TrackingEvent("other.com", "other.com", blocked = true, entity = TestEntity("Other", "Other", 9.0), categories = null)

app/src/androidTest/java/com/duckduckgo/app/cta/ui/CtaViewModelTest.kt

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,20 @@ class CtaViewModelTest {
149149
}
150150

151151
@Test
152-
fun whenCtaShownPixelIsFired() {
152+
fun whenCtaShownAndCtaIsDaxAndCanNotSendPixelThenPixelIsNotFired() {
153+
testee.onCtaShown(DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore))
154+
verify(mockPixel, never()).fire(eq(SURVEY_CTA_SHOWN), any())
155+
}
156+
157+
@Test
158+
fun whenCtaShownAndCtaIsDaxAndCanSendPixelThenPixelIsFired() {
159+
whenever(mockOnboardingStore.onboardingDialogJourney).thenReturn("s:0")
160+
testee.onCtaShown(DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore))
161+
verify(mockPixel, never()).fire(eq(SURVEY_CTA_SHOWN), any())
162+
}
163+
164+
@Test
165+
fun whenCtaShownAndCtaIsNotDaxThenPixelIsFired() {
153166
testee.onCtaShown(HomePanelCta.Survey(Survey("abc", "http://example.com", 1, SCHEDULED)))
154167
verify(mockPixel).fire(eq(SURVEY_CTA_SHOWN), any())
155168
}
@@ -193,28 +206,16 @@ class CtaViewModelTest {
193206

194207
@Test
195208
fun whenRegisterDaxBubbleIntroCtaThenDatabaseNotified() {
196-
testee.registerDaxBubbleCtaShown(DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore))
209+
testee.registerDaxBubbleCtaDismissed(DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore))
197210
verify(mockDismissedCtaDao).insert(DismissedCta(CtaId.DAX_INTRO))
198211
}
199212

200-
@Test
201-
fun whenRegisterDaxBubbleIntroCtaThenPixelIsFired() {
202-
testee.registerDaxBubbleCtaShown(DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore))
203-
verify(mockPixel).fire(eq(ONBOARDING_DAX_CTA_SHOWN), any())
204-
}
205-
206213
@Test
207214
fun whenRegisterDaxBubbleEndCtaThenDatabaseNotified() {
208-
testee.registerDaxBubbleCtaShown(DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore))
215+
testee.registerDaxBubbleCtaDismissed(DaxBubbleCta.DaxEndCta(mockOnboardingStore, mockAppInstallStore))
209216
verify(mockDismissedCtaDao).insert(DismissedCta(CtaId.DAX_END))
210217
}
211218

212-
@Test
213-
fun whenRegisterDaxBubbleEndCtaThenPixelIsFired() {
214-
testee.registerDaxBubbleCtaShown(DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore))
215-
verify(mockPixel).fire(eq(ONBOARDING_DAX_CTA_SHOWN), any())
216-
}
217-
218219
@Test
219220
fun whenRefreshCtaOnHomeTabAndConceptTestFeatureActiveThenReturnDaxIntroCta() = runBlockingTest {
220221
setConceptTestFeature()

app/src/androidTest/java/com/duckduckgo/app/di/TestAppComponent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ interface TestAppComponent : AppComponent {
7777
interface Builder {
7878

7979
@BindsInstance
80-
fun application(application: Application): TestAppComponent.Builder
80+
fun application(application: Application): Builder
8181

8282
fun build(): TestAppComponent
8383
}

app/src/androidTest/java/com/duckduckgo/app/onboarding/ui/OnboardingPageManagerTest.kt

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ import org.junit.Test
2929
class OnboardingPageManagerTest {
3030

3131
private lateinit var testee: OnboardingPageManager
32-
private val variantManager: VariantManager = mock()
32+
private val mockVariantManager: VariantManager = mock()
3333
private val onboardingPageBuilder: OnboardingPageBuilder = mock()
3434
private val mockDefaultBrowserDetector: DefaultBrowserDetector = mock()
3535

3636
@Before
3737
fun setup() {
38-
whenever(variantManager.getVariant()).thenReturn(Variant("test", features = emptyList(), filterBy = { true }))
39-
testee = OnboardingPageManagerWithTrackerBlocking(onboardingPageBuilder, mockDefaultBrowserDetector, variantManager)
38+
whenever(mockVariantManager.getVariant()).thenReturn(Variant("test", features = emptyList(), filterBy = { true }))
39+
testee = OnboardingPageManagerWithTrackerBlocking(onboardingPageBuilder, mockDefaultBrowserDetector, mockVariantManager)
4040
}
4141

4242
@Test
@@ -55,6 +55,17 @@ class OnboardingPageManagerTest {
5555
assertEquals(R.string.onboardingContinueFinalPage, resourceId)
5656
}
5757

58+
@Test
59+
fun whenDDGAsDefaultBrowserAndSuppressContinueScreenVariantEnabledThenSinglePageOnBoarding() {
60+
configureDeviceSupportsDefaultBrowser()
61+
givenSuppressDefaultBrowserContinueScreen()
62+
whenever(mockDefaultBrowserDetector.isDefaultBrowser()).thenReturn(true)
63+
64+
testee.buildPageBlueprints()
65+
66+
assertEquals(1, testee.pageCount())
67+
}
68+
5869
private fun configureDeviceSupportsDefaultBrowser() {
5970
whenever(mockDefaultBrowserDetector.deviceSupportsDefaultBrowserConfiguration()).thenReturn(true)
6071
}
@@ -63,4 +74,12 @@ class OnboardingPageManagerTest {
6374
whenever(mockDefaultBrowserDetector.deviceSupportsDefaultBrowserConfiguration()).thenReturn(false)
6475
}
6576

77+
private fun givenSuppressDefaultBrowserContinueScreen() {
78+
whenever(mockVariantManager.getVariant()).thenReturn(
79+
Variant("test", features = listOf(
80+
VariantManager.VariantFeature.ConceptTest,
81+
VariantManager.VariantFeature.SuppressDefaultBrowserContinueScreen
82+
), filterBy = { true })
83+
)
84+
}
6685
}

0 commit comments

Comments
 (0)