diff --git a/app/src/test/java/klalumiere/repertoire/SongRepositoryTest.kt b/app/src/test/java/klalumiere/repertoire/SongRepositoryTest.kt index 5118430..666c694 100644 --- a/app/src/test/java/klalumiere/repertoire/SongRepositoryTest.kt +++ b/app/src/test/java/klalumiere/repertoire/SongRepositoryTest.kt @@ -10,8 +10,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.nhaarman.mockitokotlin2.* import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.runBlocking import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.runTest import org.junit.Assert.* import org.junit.After import org.junit.Before @@ -24,17 +24,14 @@ class SongRepositoryTest { private val contentUri = Uri.parse("content://arbitrary/uri") private val songName = "Pearl Jam - Black" private val songContent = "Sheets of empty canvas" - private lateinit var dispatcherInjector: DispatchersFactory.InjectForTests private lateinit var context: Context private lateinit var contentResolver: ContentResolver private lateinit var contentResolverInjector: RepertoireContentResolverFactory.InjectForTests private lateinit var db: AppDatabase private lateinit var repository: SongRepository - @ExperimentalCoroutinesApi @Before fun createRepository() { - dispatcherInjector = DispatchersFactory.InjectForTests(UnconfinedTestDispatcher()) context = InstrumentationRegistry.getInstrumentation().targetContext contentResolver = mock { on { @@ -54,21 +51,21 @@ class SongRepositoryTest { @Test fun addTakesPersistableUriPermission() { - runBlocking { repository.add(contentUri, songName) } + runTest { repository.add(contentUri, songName) } verify(contentResolver).takePersistableUriPermission(contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION) } @Test fun removeReleasesPersistableUriPermission() { - runBlocking { repository.remove(contentUri) } + runTest { repository.remove(contentUri) } verify(contentResolver).releasePersistableUriPermission(contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION) } @Test fun addAddsSongToDb() { - runBlocking { repository.add(contentUri, songName) } + runTest { repository.add(contentUri, songName) } val song = Song( uri = contentUri.toString(), name = songName, @@ -79,7 +76,7 @@ class SongRepositoryTest { @Test fun addRemovesExtensionFromSongName() { - runBlocking { repository.add(contentUri, "Pantera - Walk.md") } + runTest { repository.add(contentUri, "Pantera - Walk.md") } val song = Song( uri = contentUri.toString(), name = "Pantera - Walk", @@ -90,8 +87,8 @@ class SongRepositoryTest { @Test fun removeRemovesSongFromDb() { - runBlocking { repository.add(contentUri, songName) } - runBlocking { repository.remove(contentUri) } + runTest { repository.add(contentUri, songName) } + runTest { repository.remove(contentUri) } assertTrue(repository.getAllSongs().getOrAwaitValue().isEmpty()) } @@ -117,7 +114,7 @@ class SongRepositoryTest { val repository = SongRepository(context).apply { injectDatabaseForTests(db) } - runBlocking { repository.add(contentUri) } + runTest { repository.add(contentUri) } val song = Song( uri = contentUri.toString(), @@ -128,8 +125,10 @@ class SongRepositoryTest { } } + @OptIn(ExperimentalCoroutinesApi::class) @Test fun getSongContent() { + val injector = DispatchersFactory.InjectForTests(UnconfinedTestDispatcher()) val repository = SongRepository(context).apply { injectDatabaseForTests(db) } @@ -145,7 +144,6 @@ class SongRepositoryTest { @After fun closeResources() { db.close() - dispatcherInjector.close() contentResolverInjector.close() }