tor-browser

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

commit 48f2d9c0aa7c0dd829a2a46834b23165047788a8
parent 5e77cab491db041827c13c9822d774628aee4c5b
Author: mcarare <48995920+mcarare@users.noreply.github.com>
Date:   Fri, 21 Nov 2025 11:41:54 +0000

Bug 2001372 - Refactor CreateEngineSessionMiddlewareTest 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/D273550

Diffstat:
Mmobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/CreateEngineSessionMiddlewareTest.kt | 70++++++++++++++++++++++++++++++++--------------------------------------
1 file changed, 32 insertions(+), 38 deletions(-)

diff --git a/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/CreateEngineSessionMiddlewareTest.kt b/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/CreateEngineSessionMiddlewareTest.kt @@ -4,6 +4,7 @@ package mozilla.components.browser.state.engine.middleware +import kotlinx.coroutines.test.runTest import mozilla.components.browser.state.action.ContentAction import mozilla.components.browser.state.action.EngineAction import mozilla.components.browser.state.selector.findCustomTab @@ -17,12 +18,9 @@ import mozilla.components.concept.engine.EngineSession import mozilla.components.concept.engine.EngineSessionState import mozilla.components.support.test.any import mozilla.components.support.test.mock -import mozilla.components.support.test.rule.MainCoroutineRule -import mozilla.components.support.test.rule.runTestOnMain import mozilla.components.support.test.whenever import org.junit.Assert.assertEquals import org.junit.Assert.assertNull -import org.junit.Rule import org.junit.Test import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.ArgumentMatchers.anyString @@ -33,18 +31,14 @@ import org.mockito.Mockito.verify import org.mockito.Mockito.`when` class CreateEngineSessionMiddlewareTest { - @get:Rule - val coroutinesTestRule = MainCoroutineRule() - private val dispatcher = coroutinesTestRule.testDispatcher - private val scope = coroutinesTestRule.scope @Test - fun `creates engine session if needed`() = runTestOnMain { + fun `creates engine session if needed`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val tab = createTab("https://www.mozilla.org", id = "1") val store = BrowserStore( initialState = BrowserState(tabs = listOf(tab)), @@ -53,24 +47,24 @@ class CreateEngineSessionMiddlewareTest { assertNull(store.state.findTab(tab.id)?.engineState?.engineSession) store.dispatch(EngineAction.CreateEngineSessionAction(tab.id)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, times(1)).createSession(false) assertEquals(engineSession, store.state.findTab(tab.id)?.engineState?.engineSession) store.dispatch(EngineAction.CreateEngineSessionAction(tab.id)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, times(1)).createSession(false) assertEquals(engineSession, store.state.findTab(tab.id)?.engineState?.engineSession) } @Test - fun `restores engine session state if available`() = runTestOnMain { + fun `restores engine session state if available`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) val engineSessionState: EngineSessionState = mock() - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val tab = createTab("https://www.mozilla.org", id = "1") val store = BrowserStore( initialState = BrowserState(tabs = listOf(tab)), @@ -80,36 +74,36 @@ class CreateEngineSessionMiddlewareTest { store.dispatch(EngineAction.UpdateEngineSessionStateAction(tab.id, engineSessionState)) store.dispatch(EngineAction.CreateEngineSessionAction(tab.id)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engineSession).restoreState(engineSessionState) Unit } @Test - fun `creates no engine session if tab does not exist`() = runTestOnMain { + fun `creates no engine session if tab does not exist`() = runTest { val engine: Engine = mock() `when`(engine.createSession(anyBoolean(), anyString())).thenReturn(mock()) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val store = BrowserStore( initialState = BrowserState(tabs = listOf()), middleware = listOf(middleware), ) store.dispatch(EngineAction.CreateEngineSessionAction("invalid")) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, never()).createSession(anyBoolean(), any()) Unit } @Test - fun `creates no engine session if session does not exist`() = runTestOnMain { + fun `creates no engine session if session does not exist`() = runTest { val engine: Engine = mock() `when`(engine.createSession(anyBoolean(), anyString())).thenReturn(mock()) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val tab = createTab("https://www.mozilla.org", id = "1") val store = BrowserStore( @@ -121,19 +115,19 @@ class CreateEngineSessionMiddlewareTest { EngineAction.CreateEngineSessionAction("non-existent"), ) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, never()).createSession(anyBoolean(), any()) Unit } @Test - fun `dispatches follow-up action after engine session is created`() = runTestOnMain { + fun `dispatches follow-up action after engine session is created`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val tab = createTab("https://www.mozilla.org", id = "1") val store = BrowserStore( initialState = BrowserState(tabs = listOf(tab)), @@ -144,7 +138,7 @@ class CreateEngineSessionMiddlewareTest { val followupAction = ContentAction.UpdateTitleAction(tab.id, "test") store.dispatch(EngineAction.CreateEngineSessionAction(tab.id, followupAction = followupAction)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, times(1)).createSession(false) assertEquals(engineSession, store.state.findTab(tab.id)?.engineState?.engineSession) @@ -152,12 +146,12 @@ class CreateEngineSessionMiddlewareTest { } @Test - fun `dispatches follow-up action once engine session is created by pending action`() = runTestOnMain { + fun `dispatches follow-up action once engine session is created by pending action`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val tab = createTab("https://www.mozilla.org", id = "1") val store = BrowserStore( initialState = BrowserState(tabs = listOf(tab)), @@ -171,7 +165,7 @@ class CreateEngineSessionMiddlewareTest { store.dispatch(EngineAction.CreateEngineSessionAction(tab.id)) store.dispatch(EngineAction.CreateEngineSessionAction(tab.id, followupAction = followupAction)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, times(1)).createSession(false) assertEquals(engineSession, store.state.findTab(tab.id)?.engineState?.engineSession) @@ -179,12 +173,12 @@ class CreateEngineSessionMiddlewareTest { } @Test - fun `creating engine session for custom tab`() { + fun `creating engine session for custom tab`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val customTab = createCustomTab("https://www.mozilla.org", id = "1") val store = BrowserStore( initialState = BrowserState(customTabs = listOf(customTab)), @@ -195,7 +189,7 @@ class CreateEngineSessionMiddlewareTest { val followupAction = ContentAction.UpdateTitleAction(customTab.id, "test") store.dispatch(EngineAction.CreateEngineSessionAction(customTab.id, followupAction = followupAction)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, times(1)).createSession(false) assertEquals(engineSession, store.state.findCustomTab(customTab.id)?.engineState?.engineSession) @@ -203,12 +197,12 @@ class CreateEngineSessionMiddlewareTest { } @Test - fun `creating engine session for custom tab with desktopMode enabled`() { + fun `creating engine session for custom tab with desktopMode enabled`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val customTab = createCustomTab("https://www.mozilla.org", id = "1", desktopMode = true) val store = BrowserStore( initialState = BrowserState(customTabs = listOf(customTab)), @@ -219,7 +213,7 @@ class CreateEngineSessionMiddlewareTest { val followupAction = ContentAction.UpdateTitleAction(customTab.id, "test") store.dispatch(EngineAction.CreateEngineSessionAction(customTab.id, followupAction = followupAction)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engine, times(1)).createSession(false) assertEquals(engineSession, store.state.findCustomTab(customTab.id)?.engineState?.engineSession) @@ -228,12 +222,12 @@ class CreateEngineSessionMiddlewareTest { } @Test - fun `set desktop mode on based on tab's property once engine session is created`() = runTestOnMain { + fun `set desktop mode on based on tab's property once engine session is created`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val tabs = listOf( createTab("https://www.mozilla.org", id = "1", desktopMode = true), createTab("https://www.mozilla.com", id = "2", desktopMode = false), @@ -245,17 +239,17 @@ class CreateEngineSessionMiddlewareTest { assertNull(store.state.findTab(tabs[0].id)?.engineState?.engineSession) store.dispatch(EngineAction.CreateEngineSessionAction(tabs[0].id)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engineSession).toggleDesktopMode(eq(true), eq(false)) } @Test - fun `set desktop mode off based on tab's property once engine session is created`() = runTestOnMain { + fun `set desktop mode off based on tab's property once engine session is created`() = runTest { val engine: Engine = mock() val engineSession: EngineSession = mock() whenever(engine.createSession(anyBoolean(), any())).thenReturn(engineSession) - val middleware = CreateEngineSessionMiddleware(engine, scope) + val middleware = CreateEngineSessionMiddleware(engine, this) val tabs = listOf( createTab("https://www.mozilla.org", id = "1", desktopMode = true), createTab("https://www.mozilla.com", id = "2", desktopMode = false), @@ -267,7 +261,7 @@ class CreateEngineSessionMiddlewareTest { assertNull(store.state.findTab(tabs[0].id)?.engineState?.engineSession) store.dispatch(EngineAction.CreateEngineSessionAction(tabs[1].id)) - dispatcher.scheduler.advanceUntilIdle() + testScheduler.advanceUntilIdle() verify(engineSession).toggleDesktopMode(eq(false), eq(false)) } }