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:
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,
)