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
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<Addon> {
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<Addon> {
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<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
fun `onInstallAddonButtonClicked shows permission dialog`() {
val addon = mockk<Addon>()

Loading…
Cancel
Save