You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
Kotlin
76 lines
2.0 KiB
Kotlin
package org.mozilla.fenix.search.telemetry
|
|
|
|
import io.mockk.mockk
|
|
import io.mockk.spyk
|
|
import io.mockk.verify
|
|
import mozilla.components.browser.state.store.BrowserStore
|
|
import mozilla.components.concept.engine.Engine
|
|
import org.json.JSONObject
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Test
|
|
|
|
class BaseSearchTelemetryTest {
|
|
|
|
private lateinit var baseTelemetry: BaseSearchTelemetry
|
|
private lateinit var handler: BaseSearchTelemetry.SearchTelemetryMessageHandler
|
|
|
|
@org.junit.Before
|
|
fun setUp() {
|
|
baseTelemetry = spyk(object : BaseSearchTelemetry() {
|
|
|
|
override fun install(engine: Engine, store: BrowserStore) {
|
|
// mock, do nothing
|
|
}
|
|
|
|
override fun processMessage(message: JSONObject) {
|
|
// mock, do nothing
|
|
}
|
|
})
|
|
handler = baseTelemetry.SearchTelemetryMessageHandler()
|
|
}
|
|
|
|
@Test
|
|
fun install() {
|
|
val engine = mockk<Engine>(relaxed = true)
|
|
val store = mockk<BrowserStore>(relaxed = true)
|
|
val id = "id"
|
|
val resourceUrl = "resourceUrl"
|
|
val messageId = "messageId"
|
|
val extensionInfo = ExtensionInfo(id, resourceUrl, messageId)
|
|
|
|
baseTelemetry.installWebExtension(engine, store, extensionInfo)
|
|
|
|
verify {
|
|
engine.installWebExtension(
|
|
id = id,
|
|
url = resourceUrl,
|
|
onSuccess = any(),
|
|
onError = any()
|
|
)
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun `get provider for google url`() {
|
|
val url = "https://www.google.com/search?q=computers"
|
|
|
|
assertEquals("google", baseTelemetry.getProviderForUrl(url)?.name)
|
|
}
|
|
|
|
@Test
|
|
fun `message handler finds a valid json object`() {
|
|
val message = JSONObject()
|
|
|
|
handler.onMessage(message, mockk())
|
|
|
|
verify { baseTelemetry.processMessage(message) }
|
|
}
|
|
|
|
@Test(expected = IllegalStateException::class)
|
|
fun `message handler finds no json object`() {
|
|
val message = "message"
|
|
|
|
handler.onMessage(message, mockk())
|
|
}
|
|
}
|