tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 290aae21ed299c8d9c294270294f0a6902fa6ac6
parent c6acc0cb971f8d0c32f65a573f12b5c5a6a0cffc
Author: mcarare <48995920+mcarare@users.noreply.github.com>
Date:   Mon,  8 Dec 2025 11:10:37 +0000

Bug 2004366 - Refactor SessionPrioritizationMiddlewareTest to use StandardTestDispatcher. r=android-reviewers,giorga

This patch replaces the usage of `MainCoroutineRule` and `runTestOnMain` with `StandardTestDispatcher` and `runTest`.

Differential Revision: https://phabricator.services.mozilla.com/D275417

Diffstat:
Mmobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/SessionPrioritizationMiddlewareTest.kt | 57++++++++++++++++++++++++++++++++++-----------------------
1 file changed, 34 insertions(+), 23 deletions(-)

diff --git a/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/SessionPrioritizationMiddlewareTest.kt b/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/SessionPrioritizationMiddlewareTest.kt @@ -4,6 +4,8 @@ package mozilla.components.browser.state.engine.middleware +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.runTest import mozilla.components.browser.state.action.AppLifecycleAction import mozilla.components.browser.state.action.BrowserAction import mozilla.components.browser.state.action.ContentAction @@ -18,23 +20,18 @@ import mozilla.components.concept.engine.EngineSession.SessionPriority.HIGH import mozilla.components.support.test.any import mozilla.components.support.test.middleware.CaptureActionsMiddleware import mozilla.components.support.test.mock -import mozilla.components.support.test.rule.MainCoroutineRule -import mozilla.components.support.test.rule.runTestOnMain import org.junit.Assert.assertEquals -import org.junit.Rule import org.junit.Test import org.mockito.Mockito.clearInvocations import org.mockito.Mockito.never import org.mockito.Mockito.verify class SessionPrioritizationMiddlewareTest { - @get:Rule - val coroutinesTestRule = MainCoroutineRule() - private val dispatcher = coroutinesTestRule.testDispatcher + private val testDispatcher = StandardTestDispatcher() @Test - fun `GIVEN a linked session WHEN UnlinkEngineSessionAction THEN set the DEFAULT priority to the unlinked tab`() { - val middleware = SessionPrioritizationMiddleware() + fun `GIVEN a linked session WHEN UnlinkEngineSessionAction THEN set the DEFAULT priority to the unlinked tab`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(mainScope = this, waitScope = this) val store = BrowserStore( initialState = BrowserState( tabs = listOf( @@ -53,8 +50,8 @@ class SessionPrioritizationMiddlewareTest { } @Test - fun `GIVEN a linked session WHEN CheckForFormDataAction THEN update the selected linked tab priority to DEFAULT if there is no form data and HIGH when there is form data`() = runTestOnMain { - val middleware = SessionPrioritizationMiddleware(updatePriorityAfterMillis = 0, waitScope = coroutinesTestRule.scope) + fun `GIVEN a linked session WHEN CheckForFormDataAction THEN update the selected linked tab priority to DEFAULT if there is no form data and HIGH when there is form data`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(updatePriorityAfterMillis = 0, mainScope = this, waitScope = this) val capture = CaptureActionsMiddleware<BrowserState, BrowserAction>() val store = BrowserStore( initialState = BrowserState( @@ -73,14 +70,14 @@ class SessionPrioritizationMiddlewareTest { store.dispatch(ContentAction.UpdateHasFormDataAction("1", true)) verify(engineSession1).updateSessionPriority(HIGH) - dispatcher.scheduler.advanceUntilIdle() + testDispatcher.scheduler.advanceUntilIdle() capture.assertLastAction(ContentAction.UpdatePriorityToDefaultAfterTimeoutAction::class) {} } @Test - fun `GIVEN a linked session WHEN CheckForFormDataAction with adjustPriority = false THEN do nothing`() = runTestOnMain { - val middleware = SessionPrioritizationMiddleware() + fun `GIVEN a linked session WHEN CheckForFormDataAction with adjustPriority = false THEN do nothing`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(mainScope = this, waitScope = this) val store = BrowserStore( initialState = BrowserState( tabs = listOf( @@ -98,8 +95,8 @@ class SessionPrioritizationMiddlewareTest { } @Test - fun `GIVEN a previous selected tab WHEN LinkEngineSessionAction THEN update the selected linked tab priority to HIGH`() = runTestOnMain { - val middleware = SessionPrioritizationMiddleware() + fun `GIVEN a previous selected tab WHEN LinkEngineSessionAction THEN update the selected linked tab priority to HIGH`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(mainScope = this, waitScope = this) val store = BrowserStore( initialState = BrowserState( tabs = listOf( @@ -111,18 +108,20 @@ class SessionPrioritizationMiddlewareTest { val engineSession1: EngineSession = mock() store.dispatch(TabListAction.SelectTabAction("1")) + testDispatcher.scheduler.advanceUntilIdle() assertEquals("", middleware.previousHighestPriorityTabId) store.dispatch(EngineAction.LinkEngineSessionAction("1", engineSession1)) + testDispatcher.scheduler.advanceUntilIdle() assertEquals("1", middleware.previousHighestPriorityTabId) verify(engineSession1).updateSessionPriority(HIGH) } @Test - fun `GIVEN a previous selected tab with priority DEFAULT WHEN selecting and linking a new tab THEN update the new one to HIGH and the previous tab based on if it contains form data`() = runTestOnMain { - val middleware = SessionPrioritizationMiddleware() + fun `GIVEN a previous selected tab with priority DEFAULT WHEN selecting and linking a new tab THEN update the new one to HIGH and the previous tab based on if it contains form data`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(mainScope = this, waitScope = this) val store = BrowserStore( initialState = BrowserState( tabs = listOf( @@ -140,15 +139,18 @@ class SessionPrioritizationMiddlewareTest { assertEquals("", middleware.previousHighestPriorityTabId) store.dispatch(EngineAction.LinkEngineSessionAction("1", engineSession1)) + testDispatcher.scheduler.advanceUntilIdle() assertEquals("1", middleware.previousHighestPriorityTabId) verify(engineSession1).updateSessionPriority(HIGH) store.dispatch(TabListAction.SelectTabAction("2")) + testDispatcher.scheduler.advanceUntilIdle() assertEquals("1", middleware.previousHighestPriorityTabId) store.dispatch(EngineAction.LinkEngineSessionAction("2", engineSession2)) + testDispatcher.scheduler.advanceUntilIdle() assertEquals("2", middleware.previousHighestPriorityTabId) verify(engineSession1).checkForFormData() @@ -156,8 +158,8 @@ class SessionPrioritizationMiddlewareTest { } @Test - fun `GIVEN no linked tab WHEN SelectTabAction THEN no changes in priority show happened`() { - val middleware = SessionPrioritizationMiddleware() + fun `GIVEN no linked tab WHEN SelectTabAction THEN no changes in priority show happened`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(mainScope = this, waitScope = this) val store = BrowserStore( initialState = BrowserState( tabs = listOf( @@ -174,8 +176,8 @@ class SessionPrioritizationMiddlewareTest { } @Test - fun `GIVEN selected tab WHEN PauseAction THEN checkForFormData should be called with adjustPriority = false`() = runTestOnMain { - val middleware = SessionPrioritizationMiddleware() + fun `GIVEN selected tab WHEN PauseAction THEN checkForFormData should be called with adjustPriority = false`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(mainScope = this, waitScope = this) val store = BrowserStore( initialState = BrowserState( tabs = listOf( @@ -189,15 +191,19 @@ class SessionPrioritizationMiddlewareTest { store.dispatch(TabListAction.SelectTabAction("1")) store.dispatch(EngineAction.LinkEngineSessionAction("1", engineSession1)) + testDispatcher.scheduler.advanceUntilIdle() + verify(engineSession1).updateSessionPriority(HIGH) store.dispatch(AppLifecycleAction.PauseAction) + testDispatcher.scheduler.advanceUntilIdle() + verify(engineSession1).checkForFormData(adjustPriority = false) } @Test - fun `GIVEN a linked session WHEN UnlinkEngineSessionAction THEN reset previousHighestPriorityTabId`() = runTestOnMain { - val middleware = SessionPrioritizationMiddleware() + fun `GIVEN a linked session WHEN UnlinkEngineSessionAction THEN reset previousHighestPriorityTabId`() = runTest(testDispatcher) { + val middleware = SessionPrioritizationMiddleware(mainScope = this, waitScope = this) val store = BrowserStore( initialState = BrowserState( tabs = listOf( @@ -211,6 +217,9 @@ class SessionPrioritizationMiddlewareTest { store.dispatch(TabListAction.SelectTabAction("1")) store.dispatch(EngineAction.LinkEngineSessionAction("1", engineSession1)) + + testDispatcher.scheduler.advanceUntilIdle() + verify(engineSession1).updateSessionPriority(HIGH) assertEquals("1", middleware.previousHighestPriorityTabId) @@ -227,6 +236,8 @@ class SessionPrioritizationMiddlewareTest { // Previously, `updateSessionPriority` will never be called. clearInvocations(engineSession1) store.dispatch(EngineAction.LinkEngineSessionAction("1", engineSession1)) + testDispatcher.scheduler.advanceUntilIdle() + verify(engineSession1).updateSessionPriority(HIGH) assertEquals("1", middleware.previousHighestPriorityTabId) }