@@ -11,11 +11,14 @@ import com.duckduckgo.subscriptions.impl.SubscriptionsConstants.MONTHLY
11
11
import com.duckduckgo.subscriptions.impl.SubscriptionsConstants.YEARLY
12
12
import com.duckduckgo.subscriptions.impl.SubscriptionsManager
13
13
import com.duckduckgo.subscriptions.impl.repository.Subscription
14
+ import com.duckduckgo.subscriptions.impl.PrivacyProFeature
15
+ import com.duckduckgo.feature.toggles.api.FakeFeatureToggleFactory
14
16
import kotlinx.coroutines.test.runTest
15
17
import org.json.JSONArray
16
18
import org.json.JSONObject
17
19
import org.junit.Assert.assertEquals
18
20
import org.junit.Assert.assertNull
21
+ import org.junit.Before
19
22
import org.junit.Rule
20
23
import org.junit.Test
21
24
import org.junit.runner.RunWith
@@ -30,11 +33,17 @@ class RealSubscriptionsJSHelperTest {
30
33
var coroutineRule = CoroutineTestRule ()
31
34
32
35
private val mockSubscriptionsManager: SubscriptionsManager = mock()
36
+ private val privacyProFeature = FakeFeatureToggleFactory .create(PrivacyProFeature ::class .java)
33
37
34
- private val testee = RealSubscriptionsJSHelper (mockSubscriptionsManager)
38
+ private val testee = RealSubscriptionsJSHelper (mockSubscriptionsManager, privacyProFeature )
35
39
36
40
private val featureName = " subscriptions"
37
41
42
+ @Before
43
+ fun setUp () {
44
+ // Set up any necessary initializations or mocks
45
+ }
46
+
38
47
@Test
39
48
fun whenMethodIsUnknownThenReturnNull () = runTest {
40
49
val method = " unknownMethod"
@@ -211,4 +220,48 @@ class RealSubscriptionsJSHelperTest {
211
220
assertEquals(expected.method, result?.method)
212
221
assertEquals(expected.params.toString(), result?.params.toString())
213
222
}
223
+
224
+ @Test
225
+ fun whenGetFeatureConfigRequestThenReturnJsCallbackDataWithUsePaidDuckAiFlag () = runTest {
226
+ val method = " getFeatureConfig"
227
+ val id = " 123"
228
+ val usePaidDuckAi = true
229
+
230
+ privacyProFeature.duckAiPlus().setRawStoredState(com.duckduckgo.feature.toggles.api.Toggle .State (usePaidDuckAi))
231
+
232
+ val result = testee.processJsCallbackMessage(featureName, method, id, null )
233
+
234
+ val jsonPayload = JSONObject ().apply {
235
+ put(" usePaidDuckAi" , usePaidDuckAi)
236
+ }
237
+
238
+ val expected = JsCallbackData (jsonPayload, featureName, method, id)
239
+
240
+ assertEquals(expected.id, result?.id)
241
+ assertEquals(expected.featureName, result?.featureName)
242
+ assertEquals(expected.method, result?.method)
243
+ assertEquals(expected.params.toString(), result?.params.toString())
244
+ }
245
+
246
+ @Test
247
+ fun whenGetFeatureConfigRequestWithDisabledFlagThenReturnJsCallbackDataWithUsePaidDuckAiFalse () = runTest {
248
+ val method = " getFeatureConfig"
249
+ val id = " 123"
250
+ val usePaidDuckAi = false
251
+
252
+ privacyProFeature.duckAiPlus().setRawStoredState(com.duckduckgo.feature.toggles.api.Toggle .State (usePaidDuckAi))
253
+
254
+ val result = testee.processJsCallbackMessage(featureName, method, id, null )
255
+
256
+ val jsonPayload = JSONObject ().apply {
257
+ put(" usePaidDuckAi" , usePaidDuckAi)
258
+ }
259
+
260
+ val expected = JsCallbackData (jsonPayload, featureName, method, id)
261
+
262
+ assertEquals(expected.id, result?.id)
263
+ assertEquals(expected.featureName, result?.featureName)
264
+ assertEquals(expected.method, result?.method)
265
+ assertEquals(expected.params.toString(), result?.params.toString())
266
+ }
214
267
}
0 commit comments