Bug 1853301 - Refactor ReviewQualityCheckNavigationMiddleware to use TabsUseCases and SessionUseCases
Refactor LinkType class to support instances for each external link accessible from the review quality check featurefenix/120.0
parent
354be91be7
commit
9cac2fca23
@ -1,75 +1,56 @@
|
|||||||
package org.mozilla.fenix.shopping.middleware
|
package org.mozilla.fenix.shopping.middleware
|
||||||
|
|
||||||
|
import mozilla.components.browser.state.store.BrowserStore
|
||||||
|
import mozilla.components.feature.tabs.TabsUseCases
|
||||||
import mozilla.components.support.test.ext.joinBlocking
|
import mozilla.components.support.test.ext.joinBlocking
|
||||||
import mozilla.components.support.test.libstate.ext.waitUntilIdle
|
import mozilla.components.support.test.libstate.ext.waitUntilIdle
|
||||||
|
import mozilla.components.support.test.robolectric.testContext
|
||||||
import mozilla.components.support.test.rule.MainCoroutineRule
|
import mozilla.components.support.test.rule.MainCoroutineRule
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Before
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||||
import org.mozilla.fenix.shopping.store.ReviewQualityCheckAction
|
import org.mozilla.fenix.shopping.store.ReviewQualityCheckAction
|
||||||
import org.mozilla.fenix.shopping.store.ReviewQualityCheckState
|
|
||||||
import org.mozilla.fenix.shopping.store.ReviewQualityCheckStore
|
import org.mozilla.fenix.shopping.store.ReviewQualityCheckStore
|
||||||
|
|
||||||
|
@RunWith(FenixRobolectricTestRunner::class)
|
||||||
class ReviewQualityCheckNavigationMiddlewareTest {
|
class ReviewQualityCheckNavigationMiddlewareTest {
|
||||||
|
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val coroutinesTestRule = MainCoroutineRule()
|
val coroutinesTestRule = MainCoroutineRule()
|
||||||
private val dispatcher = coroutinesTestRule.testDispatcher
|
private val dispatcher = coroutinesTestRule.testDispatcher
|
||||||
private val scope = coroutinesTestRule.scope
|
private val scope = coroutinesTestRule.scope
|
||||||
|
private lateinit var store: ReviewQualityCheckStore
|
||||||
@Test
|
private lateinit var browserStore: BrowserStore
|
||||||
fun `WHEN opening an external link THEN the link should be opened in a new tab`() {
|
private lateinit var addTabUseCase: TabsUseCases.SelectOrAddUseCase
|
||||||
var isOpenedInSelectedTab = false
|
private lateinit var middleware: ReviewQualityCheckNavigationMiddleware
|
||||||
var isOpenedInNewTab = false
|
|
||||||
val store = ReviewQualityCheckStore(
|
@Before
|
||||||
middleware = listOf(
|
fun setup() {
|
||||||
ReviewQualityCheckNavigationMiddleware(
|
browserStore = BrowserStore()
|
||||||
openLink = { _, openInNewTab ->
|
addTabUseCase = TabsUseCases.SelectOrAddUseCase(browserStore)
|
||||||
if (openInNewTab) {
|
middleware = ReviewQualityCheckNavigationMiddleware(
|
||||||
isOpenedInNewTab = true
|
selectOrAddUseCase = addTabUseCase,
|
||||||
} else {
|
context = testContext,
|
||||||
isOpenedInSelectedTab = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scope = scope,
|
scope = scope,
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
store.waitUntilIdle()
|
store = ReviewQualityCheckStore(
|
||||||
dispatcher.scheduler.advanceUntilIdle()
|
middleware = listOf(middleware),
|
||||||
|
)
|
||||||
store.dispatch(ReviewQualityCheckAction.OpenLink(ReviewQualityCheckState.LinkType.ExternalLink("www.mozilla.com"))).joinBlocking()
|
|
||||||
store.waitUntilIdle()
|
|
||||||
|
|
||||||
assertEquals(true, isOpenedInNewTab)
|
|
||||||
assertEquals(false, isOpenedInSelectedTab)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `WHEN re-analzying a product THEN the link should be opened in the currently selected tab`() {
|
fun `WHEN opening an external link THEN the link should be opened in a new tab`() {
|
||||||
var isOpenedInSelectedTab = false
|
val action = ReviewQualityCheckAction.OpenPoweredByLink
|
||||||
var isOpenedInNewTab = false
|
|
||||||
val store = ReviewQualityCheckStore(
|
|
||||||
middleware = listOf(
|
|
||||||
ReviewQualityCheckNavigationMiddleware(
|
|
||||||
openLink = { _, openInNewTab ->
|
|
||||||
if (openInNewTab) {
|
|
||||||
isOpenedInNewTab = true
|
|
||||||
} else {
|
|
||||||
isOpenedInSelectedTab = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scope = scope,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
store.waitUntilIdle()
|
store.waitUntilIdle()
|
||||||
dispatcher.scheduler.advanceUntilIdle()
|
dispatcher.scheduler.advanceUntilIdle()
|
||||||
|
assertEquals(0, browserStore.state.tabs.size)
|
||||||
|
|
||||||
store.dispatch(ReviewQualityCheckAction.OpenLink(ReviewQualityCheckState.LinkType.AnalyzeLink("www.mozilla.com"))).joinBlocking()
|
store.dispatch(action).joinBlocking()
|
||||||
store.waitUntilIdle()
|
store.waitUntilIdle()
|
||||||
|
|
||||||
assertEquals(true, isOpenedInSelectedTab)
|
assertEquals(1, browserStore.state.tabs.size)
|
||||||
assertEquals(false, isOpenedInNewTab)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue