diff --git a/app/src/test/java/org/mozilla/fenix/addons/AddonsManagementViewTest.kt b/app/src/test/java/org/mozilla/fenix/addons/AddonsManagementViewTest.kt index 901910ed0..11ee765ce 100644 --- a/app/src/test/java/org/mozilla/fenix/addons/AddonsManagementViewTest.kt +++ b/app/src/test/java/org/mozilla/fenix/addons/AddonsManagementViewTest.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.addons import androidx.navigation.NavController +import androidx.navigation.NavDestination import io.mockk.MockKAnnotations import io.mockk.every import io.mockk.impl.annotations.RelaxedMockK @@ -15,6 +16,8 @@ import mozilla.components.feature.addons.ui.AddonsManagerAdapterDelegate import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.mozilla.fenix.R +import org.mozilla.fenix.addons.AddonsManagementFragmentDirections.Companion.actionAddonsManagementFragmentToAddonDetailsFragment import org.mozilla.fenix.addons.AddonsManagementFragmentDirections.Companion.actionAddonsManagementFragmentToInstalledAddonDetails import org.mozilla.fenix.ext.directionsEq import org.mozilla.fenix.helpers.FenixRobolectricTestRunner @@ -37,12 +40,16 @@ class AddonsManagementViewTest { val addon = mockk { every { isInstalled() } returns true } + + every { navController.currentDestination } returns NavDestination("").apply { + id = R.id.addonsManagementFragment + } + managementView.onAddonItemClicked(addon) + val expected = actionAddonsManagementFragmentToInstalledAddonDetails(addon) verify { - navController.navigate( - directionsEq(actionAddonsManagementFragmentToInstalledAddonDetails(addon)) - ) + navController.navigate(directionsEq(expected)) } } @@ -51,14 +58,55 @@ class AddonsManagementViewTest { val addon = mockk { every { isInstalled() } returns false } + + every { navController.currentDestination } returns NavDestination("").apply { + id = R.id.addonsManagementFragment + } + managementView.onAddonItemClicked(addon) - val expected = AddonsManagementFragmentDirections.actionAddonsManagementFragmentToAddonDetailsFragment(addon) + val expected = actionAddonsManagementFragmentToAddonDetailsFragment(addon) verify { navController.navigate(directionsEq(expected)) } } + @Test + fun `onAddonItemClicked on not installed addon does not navigate if not currently on addonsManagementFragment`() { + val addon = mockk { + every { isInstalled() } returns false + } + + every { navController.currentDestination } returns NavDestination("").apply { + id = R.id.settingsFragment + } + + managementView.onAddonItemClicked(addon) + + val expected = actionAddonsManagementFragmentToAddonDetailsFragment(addon) + verify(exactly = 0) { + navController.navigate(directionsEq(expected)) + } + } + + @Test + fun `onAddonItemClicked on installed addon does not navigate if not currently on addonsManagementFragment`() { + val addon = mockk { + every { isInstalled() } returns true + } + + every { navController.currentDestination } returns NavDestination("").apply { + id = R.id.settingsFragment + } + + managementView.onAddonItemClicked(addon) + + val expected = actionAddonsManagementFragmentToAddonDetailsFragment(addon) + verify(exactly = 0) { + navController.navigate(directionsEq(expected)) + } + } + @Test fun `onInstallAddonButtonClicked shows permission dialog`() { val addon = mockk()