tor-browser

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

commit 6751cc072d186b3c482ba60d169bb194a93a43e5
parent 8f6ed0d0125ca8770491480c9eccf738994f702e
Author: mcarare <48995920+mcarare@users.noreply.github.com>
Date:   Tue, 18 Nov 2025 12:52:31 +0000

Bug 2000158 - Remove MainCoroutineRule from LoginsMiddlewareTest. r=android-reviewers,giorga

This patch refactors `LoginsMiddlewareTest` to use `runTest` with a `StandardTestDispatcher` instead of the  `MainCoroutineRule` and `runTestOnMain`.

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

Diffstat:
Mmobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddlewareTest.kt | 28++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddlewareTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/logins/ui/LoginsMiddlewareTest.kt @@ -7,15 +7,14 @@ package org.mozilla.fenix.settings.logins.ui import android.content.ClipboardManager import androidx.navigation.NavController import androidx.test.ext.junit.runners.AndroidJUnit4 +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.runTest import mozilla.components.concept.storage.Login import mozilla.components.concept.storage.LoginsStorage 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.Assert.assertTrue import org.junit.Before -import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.verify @@ -24,9 +23,6 @@ import org.mockito.Mockito.`when` @RunWith(AndroidJUnit4::class) class LoginsMiddlewareTest { - @get:Rule - val coroutineRule = MainCoroutineRule() - private lateinit var loginsStorage: LoginsStorage private lateinit var clipboardManager: ClipboardManager private lateinit var navController: NavController @@ -43,6 +39,8 @@ class LoginsMiddlewareTest { ) } + private val testDispatcher = StandardTestDispatcher() + @Before fun setup() { loginsStorage = mock() @@ -55,7 +53,7 @@ class LoginsMiddlewareTest { @Test fun `GIVEN no logins in storage WHEN store is initialized THEN list of logins will be empty`() = - runTestOnMain { + runTest(testDispatcher) { `when`(loginsStorage.list()).thenReturn(listOf()) val middleware = buildMiddleware() val store = middleware.makeStore() @@ -65,7 +63,7 @@ class LoginsMiddlewareTest { @Test fun `GIVEN current screen is list logins WHEN add password is clicked THEN navigate to add login screen`() = - runTestOnMain { + runTest(testDispatcher) { `when`(loginsStorage.list()).thenReturn(listOf()) val middleware = buildMiddleware() @@ -76,7 +74,7 @@ class LoginsMiddlewareTest { @Test fun `GIVEN current screen is list logins WHEN any login is clicked THEN navigate to detail login screen`() = - runTestOnMain { + runTest(testDispatcher) { `when`(loginsStorage.list()).thenReturn(loginList) val middleware = buildMiddleware() @@ -97,7 +95,7 @@ class LoginsMiddlewareTest { @Test fun `GIVEN current screen is list logins WHEN a login is clicked THEN navigate to edit login screen`() = - runTestOnMain { + runTest(testDispatcher) { `when`(loginsStorage.list()).thenReturn(loginList) val middleware = buildMiddleware() val store = middleware.makeStore() @@ -119,7 +117,7 @@ class LoginsMiddlewareTest { @Test fun `GIVEN current screen is list and the top-level is loaded WHEN back is clicked THEN exit logins`() = - runTestOnMain { + runTest(testDispatcher) { `when`(loginsStorage.list()).thenReturn(loginList) var exited = false exitLogins = { exited = true } @@ -133,7 +131,7 @@ class LoginsMiddlewareTest { @Test fun `GIVEN a logins store WHEN SortMenuItem is clicked THEN Save the new sort order`() = - runTestOnMain { + runTest(testDispatcher) { `when`(loginsStorage.list()).thenReturn(loginList) var newSortOrder = LoginsSortOrder.default persistLoginsSortOrder = { @@ -142,12 +140,14 @@ class LoginsMiddlewareTest { val middleware = buildMiddleware() val store = middleware.makeStore() store.dispatch(LoginsListSortMenuAction.OrderByLastUsedClicked) + testDispatcher.scheduler.advanceUntilIdle() + assertEquals(LoginsSortOrder.LastUsed, newSortOrder) } @Test fun `GIVEN login detail screen WHEN a login url button is clicked THEN open it in new tab`() = - runTestOnMain { + runTest(testDispatcher) { `when`(loginsStorage.list()).thenReturn(loginList) val url = loginList[2].origin var capturedUrl = "" @@ -171,7 +171,7 @@ class LoginsMiddlewareTest { getNavController = { navController }, exitLogins = exitLogins, openTab = openTab, - ioDispatcher = coroutineRule.testDispatcher, + ioDispatcher = testDispatcher, persistLoginsSortOrder = persistLoginsSortOrder, clipboardManager = clipboardManager, )