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

79 lines
3.2 KiB
Kotlin

package org.mozilla.fenix.ext
import androidx.fragment.app.Fragment
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.NavDirections
import androidx.navigation.NavOptions
import androidx.navigation.Navigator.Extras
import androidx.navigation.fragment.NavHostFragment
import io.mockk.Runs
import io.mockk.confirmVerified
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.spyk
import io.mockk.verify
import mozilla.components.support.test.robolectric.testContext
import org.junit.Before
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)
class FragmentTest {
val navDirections: NavDirections = mockk(relaxed = true)
val mockDestination = spyk(NavDestination("hi"))
val mockExtras: Extras = mockk(relaxed = true)
val mockId = 4
val navController = spyk(NavController(testContext))
val mockFragment: Fragment = mockk(relaxed = true)
val mockOptions: NavOptions = mockk(relaxed = true)
@Before
fun setup() {
mockkStatic(NavHostFragment::class)
every { (NavHostFragment.findNavController(mockFragment)) } returns navController
every { (NavHostFragment.findNavController(mockFragment).getCurrentDestination()) } returns mockDestination
every { (mockDestination.getId()) } returns mockId
every { (navController.getCurrentDestination()) } returns mockDestination
every { (NavHostFragment.findNavController(mockFragment).getCurrentDestination()?.getId()) } answers { (mockDestination.getId()) }
}
@Test
fun `Test nav fun with ID and directions`() {
every { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, null)) } just Runs
mockFragment.nav(mockId, navDirections)
verify { (NavHostFragment.findNavController(mockFragment).getCurrentDestination()) }
verify { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, null)) }
confirmVerified(mockFragment)
}
@Test
fun `Test nav fun with ID, directions, and extras`() {
every { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockExtras)) } just Runs
mockFragment.nav(mockId, navDirections, mockExtras)
verify { (NavHostFragment.findNavController(mockFragment).getCurrentDestination()) }
verify { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockExtras)) }
confirmVerified(mockFragment)
}
@Test
fun `Test nav fun with ID, directions, and options`() {
every { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockOptions)) } just Runs
mockFragment.nav(mockId, navDirections, mockOptions)
verify { (NavHostFragment.findNavController(mockFragment).getCurrentDestination()) }
verify { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockOptions)) }
confirmVerified(mockFragment)
}
}