1
0
Fork 0
fenix/app/src/test/java/org/mozilla/fenix/ext/NavControllerTest.kt

97 lines
3.2 KiB
Kotlin
Raw Normal View History

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.ext
import android.os.Bundle
import androidx.navigation.NavController
2019-09-12 20:14:34 +02:00
import androidx.navigation.NavDestination
import androidx.navigation.NavDirections
import androidx.navigation.NavOptions
import androidx.navigation.Navigator.Extras
2019-09-12 20:14:34 +02:00
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import org.junit.Before
2019-09-12 20:14:34 +02:00
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.TestApplication
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
@RunWith(RobolectricTestRunner::class)
@Config(application = TestApplication::class)
2019-09-12 20:14:34 +02:00
class NavControllerTest {
private val navController: NavController = mockk(relaxed = true)
private val navDirections = mockk<NavDirections>(relaxed = true)
private val mockDestination: NavDestination = mockk(relaxed = true)
private val mockExtras: Extras = mockk(relaxed = true)
private val mockOptions: NavOptions = mockk(relaxed = true)
private val mockBundle: Bundle = mockk(relaxed = true)
@Before
fun setUp() {
every { (navController.currentDestination) } returns mockDestination
every { (mockDestination.id) } returns 4
}
@Test
fun `Nav with id and directions args`() {
navController.nav(4, navDirections)
verify { (navController.currentDestination) }
verify { (navController.navigate(navDirections, null)) }
}
@Test
fun `Nav with id, directions, and extras args`() {
navController.nav(4, navDirections, mockExtras)
verify { (navController.currentDestination) }
verify { (navController.navigate(navDirections, mockExtras)) }
}
@Test
fun `Nav with id, directions, and options args`() {
navController.nav(4, navDirections, mockOptions)
verify { (navController.currentDestination) }
verify { (navController.navigate(navDirections, mockOptions)) }
}
@Test
fun `Nav with id, destId, bundle, options, and extras args`() {
navController.nav(4, 5, mockBundle, mockOptions, mockExtras)
verify { (navController.currentDestination) }
verify { (navController.navigate(5, mockBundle, mockOptions, mockExtras)) }
}
@Test
fun `Test error response for id exception in-block`() {
navController.nav(7, navDirections)
verify { (recordIdException(mockDestination.id, 7)) }
}
// TO-DO Not Working
/* @Test
fun `Test record id exception fun`() {
mockkStatic(String::class)
val actual = 7
var expected = 4
class MySentry() {
public fun capture(myString: String) {
println(myString) }
}
class MyBuildConfig() {
public val SENTRY_TOKEN = "Mozilla"
}
//val Sentry = MySentry()
val BuildConfig = MyBuildConfig()
every {BuildConfig.SENTRY_TOKEN.isNullOrEmpty()} returns false
recordIdException(actual, expected)
//verify { Sentry.capture("Fragment id $actual did not match expected $expected")}
}*/
}