For #15268: Update unit tests for safe navigation to details fragment.

pull/159/head^2
mcarare 4 years ago committed by Mihai Adrian Carare
parent 896c1b7875
commit e3b5dcbfec

@ -5,6 +5,7 @@
package org.mozilla.fenix.addons package org.mozilla.fenix.addons
import androidx.navigation.NavController import androidx.navigation.NavController
import androidx.navigation.NavDestination
import io.mockk.MockKAnnotations import io.mockk.MockKAnnotations
import io.mockk.every import io.mockk.every
import io.mockk.impl.annotations.RelaxedMockK import io.mockk.impl.annotations.RelaxedMockK
@ -15,6 +16,8 @@ import mozilla.components.feature.addons.ui.AddonsManagerAdapterDelegate
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith 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.addons.AddonsManagementFragmentDirections.Companion.actionAddonsManagementFragmentToInstalledAddonDetails
import org.mozilla.fenix.ext.directionsEq import org.mozilla.fenix.ext.directionsEq
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@ -37,12 +40,16 @@ class AddonsManagementViewTest {
val addon = mockk<Addon> { val addon = mockk<Addon> {
every { isInstalled() } returns true every { isInstalled() } returns true
} }
every { navController.currentDestination } returns NavDestination("").apply {
id = R.id.addonsManagementFragment
}
managementView.onAddonItemClicked(addon) managementView.onAddonItemClicked(addon)
val expected = actionAddonsManagementFragmentToInstalledAddonDetails(addon)
verify { verify {
navController.navigate( navController.navigate(directionsEq(expected))
directionsEq(actionAddonsManagementFragmentToInstalledAddonDetails(addon))
)
} }
} }
@ -51,14 +58,55 @@ class AddonsManagementViewTest {
val addon = mockk<Addon> { val addon = mockk<Addon> {
every { isInstalled() } returns false every { isInstalled() } returns false
} }
every { navController.currentDestination } returns NavDestination("").apply {
id = R.id.addonsManagementFragment
}
managementView.onAddonItemClicked(addon) managementView.onAddonItemClicked(addon)
val expected = AddonsManagementFragmentDirections.actionAddonsManagementFragmentToAddonDetailsFragment(addon) val expected = actionAddonsManagementFragmentToAddonDetailsFragment(addon)
verify { verify {
navController.navigate(directionsEq(expected)) navController.navigate(directionsEq(expected))
} }
} }
@Test
fun `onAddonItemClicked on not installed addon does not navigate if not currently on addonsManagementFragment`() {
val addon = mockk<Addon> {
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<Addon> {
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 @Test
fun `onInstallAddonButtonClicked shows permission dialog`() { fun `onInstallAddonButtonClicked shows permission dialog`() {
val addon = mockk<Addon>() val addon = mockk<Addon>()

Loading…
Cancel
Save