Skip to content

Commit d2f4c15

Browse files
committed
tests
1 parent 7a4e10b commit d2f4c15

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

subscriptions/subscriptions-impl/src/test/java/com/duckduckgo/subscriptions/impl/RealSubscriptionsManagerTest.kt

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2181,6 +2181,61 @@ class RealSubscriptionsManagerTest(private val authApiV2Enabled: Boolean) {
21812181
whenever(playBillingManager.products).thenReturn(listOf(productDetails))
21822182
}
21832183

2184+
@Test
2185+
fun whenBlackFridayOfferAvailableWithFeatureFlagEnabledThenReturnTrue() = runTest {
2186+
givenBlackFridayFeatureFlagEnabled(true)
2187+
2188+
val result = subscriptionsManager.blackFridayOfferAvailable()
2189+
2190+
assertTrue(result)
2191+
}
2192+
2193+
@Test
2194+
fun whenBlackFridayOfferAvailableWithFeatureFlagDisabledThenReturnFalse() = runTest {
2195+
givenBlackFridayFeatureFlagEnabled(false)
2196+
2197+
val result = subscriptionsManager.blackFridayOfferAvailable()
2198+
2199+
assertFalse(result)
2200+
}
2201+
2202+
@SuppressLint("DenyListedApi")
2203+
private fun givenBlackFridayFeatureFlagEnabled(value: Boolean) {
2204+
privacyProFeature.blackFridayOffer2025().setRawStoredState(State(remoteEnableState = value))
2205+
}
2206+
2207+
private fun givenUSPlanOffersExist() {
2208+
val monthlyOffer: SubscriptionOfferDetails = mock {
2209+
on { basePlanId } doReturn MONTHLY_PLAN_US
2210+
on { offerId } doReturn null
2211+
}
2212+
val yearlyOffer: SubscriptionOfferDetails = mock {
2213+
on { basePlanId } doReturn YEARLY_PLAN_US
2214+
on { offerId } doReturn null
2215+
}
2216+
val productDetails: ProductDetails = mock {
2217+
on { productId } doReturn SubscriptionsConstants.BASIC_SUBSCRIPTION
2218+
on { subscriptionOfferDetails } doReturn listOf(monthlyOffer, yearlyOffer)
2219+
}
2220+
whenever(playBillingManager.products).thenReturn(listOf(productDetails))
2221+
}
2222+
2223+
private fun givenROWPlanOffersExist() {
2224+
val monthlyOffer: SubscriptionOfferDetails = mock {
2225+
on { basePlanId } doReturn MONTHLY_PLAN_ROW
2226+
on { offerId } doReturn null
2227+
}
2228+
val yearlyOffer: SubscriptionOfferDetails = mock {
2229+
on { basePlanId } doReturn YEARLY_PLAN_ROW
2230+
on { offerId } doReturn null
2231+
}
2232+
val productDetails: ProductDetails = mock {
2233+
on { productId } doReturn SubscriptionsConstants.BASIC_SUBSCRIPTION
2234+
on { subscriptionOfferDetails } doReturn listOf(monthlyOffer, yearlyOffer)
2235+
}
2236+
whenever(playBillingManager.products).thenReturn(listOf(productDetails))
2237+
}
2238+
21842239
private companion object {
21852240
@JvmStatic
21862241
@Parameterized.Parameters(name = "authApiV2Enabled={0}")

subscriptions/subscriptions-impl/src/test/java/com/duckduckgo/subscriptions/impl/settings/views/ProSettingViewModelTest.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ class ProSettingViewModelTest {
8181
whenever(subscriptionsManager.subscriptionStatus).thenReturn(flowOf(SubscriptionStatus.EXPIRED))
8282
whenever(subscriptionsManager.getSubscriptionOffer()).thenReturn(emptyList())
8383
whenever(subscriptionsManager.isFreeTrialEligible()).thenReturn(false)
84+
whenever(subscriptionsManager.blackFridayOfferAvailable()).thenReturn(false)
8485

8586
viewModel.onCreate(mock())
8687
viewModel.viewState.test {
@@ -104,6 +105,7 @@ class ProSettingViewModelTest {
104105
whenever(subscriptionsManager.subscriptionStatus).thenReturn(flowOf(SubscriptionStatus.INACTIVE))
105106
whenever(subscriptionsManager.getSubscriptionOffer()).thenReturn(emptyList())
106107
whenever(subscriptionsManager.isFreeTrialEligible()).thenReturn(true)
108+
whenever(subscriptionsManager.blackFridayOfferAvailable()).thenReturn(false)
107109

108110
viewModel.onCreate(mock())
109111
viewModel.viewState.test {
@@ -118,6 +120,7 @@ class ProSettingViewModelTest {
118120
whenever(subscriptionsManager.subscriptionStatus).thenReturn(flowOf(SubscriptionStatus.AUTO_RENEWABLE))
119121
whenever(subscriptionsManager.getSubscriptionOffer()).thenReturn(listOf(subscriptionOffer.copy(features = setOf(Product.DuckAiPlus.value))))
120122
whenever(subscriptionsManager.isFreeTrialEligible()).thenReturn(true)
123+
whenever(subscriptionsManager.blackFridayOfferAvailable()).thenReturn(false)
121124

122125
viewModel.onCreate(mock())
123126
viewModel.viewState.test {
@@ -132,6 +135,7 @@ class ProSettingViewModelTest {
132135
whenever(subscriptionsManager.subscriptionStatus).thenReturn(flowOf(SubscriptionStatus.AUTO_RENEWABLE))
133136
whenever(subscriptionsManager.getSubscriptionOffer()).thenReturn(listOf(subscriptionOffer.copy(features = setOf(Product.NetP.value))))
134137
whenever(subscriptionsManager.isFreeTrialEligible()).thenReturn(true)
138+
whenever(subscriptionsManager.blackFridayOfferAvailable()).thenReturn(false)
135139

136140
viewModel.onCreate(mock())
137141
viewModel.viewState.test {
@@ -146,6 +150,7 @@ class ProSettingViewModelTest {
146150
whenever(subscriptionsManager.subscriptionStatus).thenReturn(flowOf(SubscriptionStatus.AUTO_RENEWABLE))
147151
whenever(subscriptionsManager.getSubscriptionOffer()).thenReturn(listOf(subscriptionOffer.copy(features = setOf(Product.DuckAiPlus.value))))
148152
whenever(subscriptionsManager.isFreeTrialEligible()).thenReturn(true)
153+
whenever(subscriptionsManager.blackFridayOfferAvailable()).thenReturn(false)
149154

150155
viewModel.onCreate(mock())
151156
viewModel.viewState.test {
@@ -154,6 +159,34 @@ class ProSettingViewModelTest {
154159
}
155160
}
156161

162+
@Test
163+
fun whenBlackFridayOfferAvailableThenViewStateBlackFridayOfferAvailableTrue() = runTest {
164+
whenever(subscriptionsManager.subscriptionStatus).thenReturn(flowOf(SubscriptionStatus.INACTIVE))
165+
whenever(subscriptionsManager.getSubscriptionOffer()).thenReturn(emptyList())
166+
whenever(subscriptionsManager.isFreeTrialEligible()).thenReturn(false)
167+
whenever(subscriptionsManager.blackFridayOfferAvailable()).thenReturn(true)
168+
169+
viewModel.onCreate(mock())
170+
viewModel.viewState.test {
171+
assertTrue(awaitItem().blackFridayOfferAvailable)
172+
cancelAndConsumeRemainingEvents()
173+
}
174+
}
175+
176+
@Test
177+
fun whenBlackFridayOfferNotAvailableThenViewStateBlackFridayOfferAvailableFalse() = runTest {
178+
whenever(subscriptionsManager.subscriptionStatus).thenReturn(flowOf(SubscriptionStatus.INACTIVE))
179+
whenever(subscriptionsManager.getSubscriptionOffer()).thenReturn(emptyList())
180+
whenever(subscriptionsManager.isFreeTrialEligible()).thenReturn(false)
181+
whenever(subscriptionsManager.blackFridayOfferAvailable()).thenReturn(false)
182+
183+
viewModel.onCreate(mock())
184+
viewModel.viewState.test {
185+
assertFalse(awaitItem().blackFridayOfferAvailable)
186+
cancelAndConsumeRemainingEvents()
187+
}
188+
}
189+
157190
private val subscriptionOffer = SubscriptionOffer(
158191
planId = "test",
159192
offerId = null,

0 commit comments

Comments
 (0)