From 7b3a6febf7e87ade49ae3667c5bc76b4dec24aa2 Mon Sep 17 00:00:00 2001 From: mcarare Date: Tue, 12 Jul 2022 09:34:41 +0300 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/25980: Use new extension function to get fragment's NavController. --- .../java/org/mozilla/fenix/ext/Fragment.kt | 3 +-- .../org/mozilla/fenix/ext/FragmentTest.kt | 22 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/ext/Fragment.kt b/app/src/main/java/org/mozilla/fenix/ext/Fragment.kt index bbfcb84e3d..c25c424295 100644 --- a/app/src/main/java/org/mozilla/fenix/ext/Fragment.kt +++ b/app/src/main/java/org/mozilla/fenix/ext/Fragment.kt @@ -11,7 +11,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.navigation.NavDirections import androidx.navigation.NavOptions -import androidx.navigation.fragment.NavHostFragment.findNavController import androidx.navigation.fragment.findNavController import mozilla.components.concept.base.crash.Breadcrumb import org.mozilla.fenix.NavHostActivity @@ -25,7 +24,7 @@ val Fragment.requireComponents: Components get() = requireContext().components fun Fragment.nav(@IdRes id: Int?, directions: NavDirections, options: NavOptions? = null) { - findNavController(this).nav(id, directions, options) + findNavController().nav(id, directions, options) } fun Fragment.getPreferenceKey(@StringRes resourceId: Int): String = getString(resourceId) diff --git a/app/src/test/java/org/mozilla/fenix/ext/FragmentTest.kt b/app/src/test/java/org/mozilla/fenix/ext/FragmentTest.kt index 5fd193f54c..9d0e08ecf9 100644 --- a/app/src/test/java/org/mozilla/fenix/ext/FragmentTest.kt +++ b/app/src/test/java/org/mozilla/fenix/ext/FragmentTest.kt @@ -10,7 +10,7 @@ import androidx.navigation.NavDestination import androidx.navigation.NavDirections import androidx.navigation.NavOptions import androidx.navigation.Navigator.Extras -import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.fragment.findNavController import io.mockk.Runs import io.mockk.confirmVerified import io.mockk.every @@ -38,31 +38,31 @@ class FragmentTest { @Before fun setup() { - mockkStatic(NavHostFragment::class) - every { (NavHostFragment.findNavController(mockFragment)) } returns navController - every { (NavHostFragment.findNavController(mockFragment).currentDestination) } returns mockDestination + mockkStatic("androidx.navigation.fragment.FragmentKt") + every { (mockFragment.findNavController()) } returns navController + every { (mockFragment.findNavController().currentDestination) } returns mockDestination every { (mockDestination.id) } returns mockId every { (navController.currentDestination) } returns mockDestination - every { (NavHostFragment.findNavController(mockFragment).currentDestination?.id) } answers { (mockDestination.id) } + every { (mockFragment.findNavController().currentDestination?.id) } answers { (mockDestination.id) } } @Test fun `Test nav fun with ID and directions`() { - every { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, null)) } just Runs + every { (mockFragment.findNavController().navigate(navDirections, null)) } just Runs mockFragment.nav(mockId, navDirections) - verify { (NavHostFragment.findNavController(mockFragment).currentDestination) } - verify { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, null)) } + verify { (mockFragment.findNavController().currentDestination) } + verify { (mockFragment.findNavController().navigate(navDirections, null)) } confirmVerified(mockFragment) } @Test fun `Test nav fun with ID, directions, and options`() { - every { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockOptions)) } just Runs + every { (mockFragment.findNavController().navigate(navDirections, mockOptions)) } just Runs mockFragment.nav(mockId, navDirections, mockOptions) - verify { (NavHostFragment.findNavController(mockFragment).currentDestination) } - verify { (NavHostFragment.findNavController(mockFragment).navigate(navDirections, mockOptions)) } + verify { (mockFragment.findNavController().currentDestination) } + verify { (mockFragment.findNavController().navigate(navDirections, mockOptions)) } confirmVerified(mockFragment) } }