commit f9a3a71076fe19c848b8a519c6dec8239d5d6ec8
parent 90871b0071ba0beb8acf9cacf5260b50b7834536
Author: mcarare <48995920+mcarare@users.noreply.github.com>
Date: Thu, 8 Jan 2026 10:39:38 +0000
Bug 2008014- Update ThumbnailStorageTest to use StandardTestDispatcher and runTest. r=android-reviewers,giorga
Differential Revision: https://phabricator.services.mozilla.com/D277862
Diffstat:
1 file changed, 27 insertions(+), 21 deletions(-)
diff --git a/mobile/android/android-components/components/browser/thumbnails/src/test/java/mozilla/components/browser/thumbnails/storage/ThumbnailStorageTest.kt b/mobile/android/android-components/components/browser/thumbnails/src/test/java/mozilla/components/browser/thumbnails/storage/ThumbnailStorageTest.kt
@@ -7,19 +7,17 @@ package mozilla.components.browser.thumbnails.storage
import android.graphics.Bitmap
import androidx.test.ext.junit.runners.AndroidJUnit4
import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.runTest
import mozilla.components.concept.base.images.ImageLoadRequest
import mozilla.components.concept.base.images.ImageSaveRequest
-import mozilla.components.support.test.ext.joinBlocking
import mozilla.components.support.test.mock
import mozilla.components.support.test.robolectric.testContext
-import mozilla.components.support.test.rule.MainCoroutineRule
-import mozilla.components.support.test.rule.runTestOnMain
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull
import org.junit.Before
-import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.spy
@@ -28,9 +26,7 @@ import org.mockito.Mockito.`when`
@RunWith(AndroidJUnit4::class)
class ThumbnailStorageTest {
- @get:Rule
- val coroutinesTestRule = MainCoroutineRule()
- private val testDispatcher = coroutinesTestRule.testDispatcher
+ private val testDispatcher = StandardTestDispatcher()
@Before
@After
@@ -40,18 +36,23 @@ class ThumbnailStorageTest {
}
@Test
- fun `clearThumbnails`() = runTestOnMain {
+ fun clearThumbnails() = runTest(testDispatcher) {
val bitmap: Bitmap = mock()
val thumbnailStorage = spy(ThumbnailStorage(testContext, testDispatcher))
- thumbnailStorage.saveThumbnail(ImageSaveRequest("test-tab1", false), bitmap).joinBlocking()
- thumbnailStorage.saveThumbnail(ImageSaveRequest("test-tab2", false), bitmap).joinBlocking()
+ thumbnailStorage.saveThumbnail(ImageSaveRequest("test-tab1", false), bitmap)
+ testDispatcher.scheduler.advanceUntilIdle()
+
+ thumbnailStorage.saveThumbnail(ImageSaveRequest("test-tab2", false), bitmap)
+ testDispatcher.scheduler.advanceUntilIdle()
+
var thumbnail1 = thumbnailStorage.loadThumbnail(ImageLoadRequest("test-tab1", 100, false)).await()
var thumbnail2 = thumbnailStorage.loadThumbnail(ImageLoadRequest("test-tab2", 100, false)).await()
assertNotNull(thumbnail1)
assertNotNull(thumbnail2)
thumbnailStorage.clearThumbnails()
+ testDispatcher.scheduler.advanceUntilIdle()
thumbnail1 = thumbnailStorage.loadThumbnail(ImageLoadRequest("test-tab1", 100, false)).await()
thumbnail2 = thumbnailStorage.loadThumbnail(ImageLoadRequest("test-tab2", 100, false)).await()
assertNull(thumbnail1)
@@ -59,50 +60,55 @@ class ThumbnailStorageTest {
}
@Test
- fun `deleteThumbnail`() = runTestOnMain {
+ fun deleteThumbnail() = runTest(testDispatcher) {
val request = ImageSaveRequest("test-tab1", false)
val bitmap: Bitmap = mock()
val thumbnailStorage = spy(ThumbnailStorage(testContext, testDispatcher))
- thumbnailStorage.saveThumbnail(request, bitmap).joinBlocking()
+ thumbnailStorage.saveThumbnail(request, bitmap)
var thumbnail = thumbnailStorage.loadThumbnail(ImageLoadRequest(request.id, 100, request.isPrivate)).await()
assertNotNull(thumbnail)
- thumbnailStorage.deleteThumbnail(request.id, request.isPrivate).joinBlocking()
+ thumbnailStorage.deleteThumbnail(request.id, request.isPrivate)
thumbnail = thumbnailStorage.loadThumbnail(ImageLoadRequest(request.id, 100, request.isPrivate)).await()
assertNull(thumbnail)
}
@Test
- fun `saveThumbnail`() = runTestOnMain {
+ fun saveThumbnail() = runTest(testDispatcher) {
val request = ImageLoadRequest("test-tab1", 100, false)
val bitmap: Bitmap = mock()
- val thumbnailStorage = spy(ThumbnailStorage(testContext))
+ val thumbnailStorage = spy(ThumbnailStorage(testContext, testDispatcher))
var thumbnail = thumbnailStorage.loadThumbnail(request).await()
assertNull(thumbnail)
- thumbnailStorage.saveThumbnail(ImageSaveRequest(request.id, request.isPrivate), bitmap).joinBlocking()
+ thumbnailStorage.saveThumbnail(ImageSaveRequest(request.id, request.isPrivate), bitmap)
+ testDispatcher.scheduler.advanceUntilIdle()
+
thumbnail = thumbnailStorage.loadThumbnail(request).await()
assertNotNull(thumbnail)
}
@Test
- fun `WHEN private save request THEN placed in private cache`() = runTestOnMain {
+ fun `WHEN private save request THEN placed in private cache`() = runTest(testDispatcher) {
val request = ImageLoadRequest("test-tab1", 100, true)
val bitmap: Bitmap = mock()
- val thumbnailStorage = spy(ThumbnailStorage(testContext))
+ val thumbnailStorage = spy(ThumbnailStorage(testContext, testDispatcher))
var thumbnail = thumbnailStorage.loadThumbnail(request).await()
assertNull(thumbnail)
- thumbnailStorage.saveThumbnail(ImageSaveRequest(request.id, request.isPrivate), bitmap).joinBlocking()
+ thumbnailStorage.saveThumbnail(ImageSaveRequest(request.id, request.isPrivate), bitmap)
+ testDispatcher.scheduler.advanceUntilIdle()
+
thumbnail = thumbnailStorage.loadThumbnail(request).await()
+
assertNotNull(thumbnail)
}
@Test
- fun `loadThumbnail`() = runTestOnMain {
+ fun loadThumbnail() = runTest(testDispatcher) {
val request = ImageLoadRequest("test-tab1", 100, false)
val bitmap: Bitmap = mock()
val thumbnailStorage = spy(ThumbnailStorage(testContext, testDispatcher))
@@ -115,7 +121,7 @@ class ThumbnailStorageTest {
}
@Test
- fun `WHEN private load request THEN loaded from private cache`() = runTestOnMain {
+ fun `WHEN private load request THEN loaded from private cache`() = runTest(testDispatcher) {
val request = ImageLoadRequest("test-tab1", 100, true)
val bitmap: Bitmap = mock()
val thumbnailStorage = spy(ThumbnailStorage(testContext, testDispatcher))