@@ -27,6 +27,7 @@ import com.duckduckgo.contentscopescripts.impl.WebViewCompatContentScopeScripts
27
27
import com.duckduckgo.js.messaging.api.JsMessage
28
28
import com.duckduckgo.js.messaging.api.ProcessResult
29
29
import com.duckduckgo.js.messaging.api.ProcessResult.SendToConsumer
30
+ import com.duckduckgo.js.messaging.api.SubscriptionEventData
30
31
import com.duckduckgo.js.messaging.api.WebViewCompatMessageCallback
31
32
import com.duckduckgo.js.messaging.api.WebViewCompatMessageHandler
32
33
import junit.framework.TestCase.assertEquals
@@ -36,6 +37,7 @@ import org.junit.Before
36
37
import org.junit.Rule
37
38
import org.junit.Test
38
39
import org.junit.runner.RunWith
40
+ import org.mockito.ArgumentMatchers.anyString
39
41
import org.mockito.kotlin.any
40
42
import org.mockito.kotlin.eq
41
43
import org.mockito.kotlin.mock
@@ -218,61 +220,50 @@ class ContentScopeScriptsWebMessagingPluginTest {
218
220
verify(mockWebViewCompatWrapper).removeWebMessageListener(mockWebView, " contentScopeAdsjs" )
219
221
}
220
222
221
- // @Test
222
- // fun `when posting message and adsjs is disabled then do not post message`() = runTest {
223
- // whenever(adsJsContentScopeScripts.isEnabled()).thenReturn(false)
224
- // val eventData = SubscriptionEventData("feature", "subscription", JSONObject())
225
- // givenInterfaceIsRegistered()
226
- // processInitialPing()
227
- //
228
- // val result = testee.postMessage(eventData)
229
- //
230
- // verify(mockWebView, never()).safePostMessage(any(), any())
231
- // assertFalse(result)
232
- // }
233
- //
234
- // @Test
235
- // fun `when posting message and adsjs is enabled but webView not registered then do not post message`() = runTest {
236
- // whenever(adsJsContentScopeScripts.isEnabled()).thenReturn(true)
237
- // val eventData = SubscriptionEventData("feature", "subscription", JSONObject())
238
- // processInitialPing()
239
- //
240
- // val result = testee.postMessage(eventData)
241
- //
242
- // verify(mockWebView, never()).safePostMessage(any(), any())
243
- // assertFalse(result)
244
- // }
245
- //
246
- // @Test
247
- // fun `when posting message and adsjs is enabled but initialPing not processes then do not post message`() = runTest {
248
- // whenever(adsJsContentScopeScripts.isEnabled()).thenReturn(true)
249
- // val eventData = SubscriptionEventData("feature", "subscription", JSONObject())
250
- //
251
- // val result = testee.postMessage(eventData)
252
- //
253
- // verify(mockWebView, never()).safePostMessage(any(), any())
254
- // assertFalse(result)
255
- // }
256
- //
257
- // @Test
258
- // fun `when posting message after getting initialPing and adsjs is enabled then post message`() = runTest {
259
- // whenever(adsJsContentScopeScripts.isEnabled()).thenReturn(true)
260
- // val eventData = SubscriptionEventData("feature", "subscription", JSONObject())
261
- // givenInterfaceIsRegistered()
262
- // processInitialPing()
263
- // verify(mockWebView, never()).postWebMessage(any(), any())
264
- //
265
- // val result = testee.postMessage(eventData)
266
- //
267
- // verify(mockWebView).safePostMessage(any(), any())
268
- // assertTrue(result)
269
- // }
270
-
271
- private fun processInitialPing () = runTest {
272
- val message = """
273
- {"context":"contentScopeScripts","featureName":"messaging","id":"debugId","method":"initialPing","params":{}}
223
+ @Test
224
+ fun `when posting message and adsjs is disabled then do not post message` () = runTest {
225
+ whenever(webViewCompatContentScopeScripts.isEnabled()).thenReturn(false )
226
+ val eventData = SubscriptionEventData (" feature" , " subscription" , JSONObject ())
227
+ givenInterfaceIsRegistered()
228
+
229
+ testee.postMessage(eventData)
230
+
231
+ verify(mockReplyProxy, never()).postMessage(anyString())
232
+ }
233
+
234
+ @Test
235
+ fun `when posting message and adsjs is enabled but webView not registered then do not post message` () = runTest {
236
+ whenever(webViewCompatContentScopeScripts.isEnabled()).thenReturn(true )
237
+ val eventData = SubscriptionEventData (" feature" , " subscription" , JSONObject ())
238
+
239
+ testee.postMessage(eventData)
240
+
241
+ verify(mockReplyProxy, never()).postMessage(anyString())
242
+ }
243
+
244
+ @Test
245
+ fun `when posting message and adsjs is enabled but initialPing not processes then do not post message` () = runTest {
246
+ whenever(webViewCompatContentScopeScripts.isEnabled()).thenReturn(true )
247
+ val eventData = SubscriptionEventData (" feature" , " subscription" , JSONObject ())
248
+
249
+ testee.postMessage(eventData)
250
+
251
+ verify(mockReplyProxy, never()).postMessage(anyString())
252
+ }
253
+
254
+ @Test
255
+ fun `when posting message after getting initialPing and adsjs is enabled then post message` () = runTest {
256
+ whenever(webViewCompatContentScopeScripts.isEnabled()).thenReturn(true )
257
+ val eventData = SubscriptionEventData (" feature" , " subscription" , JSONObject ())
258
+ givenInterfaceIsRegistered()
259
+ val expectedMessage = """
260
+ {"context":"contentScopeScripts","featureName":"feature","params":{},"subscriptionName":"subscription"}
274
261
""" .trimIndent()
275
- testee.process(message, callback, mockReplyProxy)
262
+
263
+ verify(mockWebView, never()).postWebMessage(any(), any())
264
+
265
+ testee.postMessage(eventData)
266
+ verify(mockReplyProxy).postMessage(expectedMessage)
276
267
}
277
268
278
269
private val callback = object : WebViewCompatMessageCallback {
@@ -290,5 +281,10 @@ class ContentScopeScriptsWebMessagingPluginTest {
290
281
291
282
private fun givenInterfaceIsRegistered () = runTest {
292
283
testee.register(callback, mockWebView)
284
+ val initialPingMessage =
285
+ """
286
+ {"context":"contentScopeScripts","featureName":"messaging","id":"debugId","method":"initialPing","params":{}}
287
+ """ .trimIndent()
288
+ testee.process(initialPingMessage, callback, mockReplyProxy)
293
289
}
294
290
}
0 commit comments