Fix android tests

This commit is contained in:
Koitharu
2022-07-18 12:56:56 +03:00
parent 206fb4e584
commit 35f450e444
6 changed files with 29 additions and 14 deletions

View File

@@ -29,7 +29,7 @@
} }
], ],
"state": "FINISHED", "state": "FINISHED",
"largeCoverUrl": null, "largeCoverUrl": "https://staticrm.rmr.rocks/uploads/pics/01/12/559_o.jpg",
"description": null, "description": null,
"source": "READMANGA_RU" "source": "READMANGA_RU"
} }

View File

@@ -0,0 +1,9 @@
package org.koitharu.kotatsu
import android.app.Instrumentation
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
suspend fun Instrumentation.awaitForIdle() = suspendCoroutine<Unit> { cont ->
waitForIdle { cont.resume(Unit) }
}

View File

@@ -17,18 +17,15 @@ object SampleData {
.add(KotlinJsonAdapterFactory()) .add(KotlinJsonAdapterFactory())
.build() .build()
val manga: Manga val manga: Manga = loadAsset("manga/header.json", Manga::class)
get() = loadAsset("manga/header.json", Manga::class)
val mangaDetails: Manga val mangaDetails: Manga = loadAsset("manga/full.json", Manga::class)
get() = loadAsset("manga/full.json", Manga::class)
val tag = mangaDetails.tags.elementAt(2) val tag = mangaDetails.tags.elementAt(2)
val chapter = checkNotNull(mangaDetails.chapters)[2] val chapter = checkNotNull(mangaDetails.chapters)[2]
val favouriteCategory: FavouriteCategory val favouriteCategory: FavouriteCategory = loadAsset("categories/simple.json", FavouriteCategory::class)
get() = loadAsset("categories/simple.json", FavouriteCategory::class)
fun <T : Any> loadAsset(name: String, cls: KClass<T>): T { fun <T : Any> loadAsset(name: String, cls: KClass<T>): T {
val assets = InstrumentationRegistry.getInstrumentation().context.assets val assets = InstrumentationRegistry.getInstrumentation().context.assets

View File

@@ -5,7 +5,6 @@ import android.content.pm.ShortcutManager
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import kotlinx.coroutines.delay
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
@@ -13,6 +12,7 @@ import org.junit.runner.RunWith
import org.koin.test.KoinTest import org.koin.test.KoinTest
import org.koin.test.inject import org.koin.test.inject
import org.koitharu.kotatsu.SampleData import org.koitharu.kotatsu.SampleData
import org.koitharu.kotatsu.awaitForIdle
import org.koitharu.kotatsu.core.db.MangaDatabase import org.koitharu.kotatsu.core.db.MangaDatabase
import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.history.domain.HistoryRepository
import kotlin.test.assertEquals import kotlin.test.assertEquals
@@ -32,7 +32,7 @@ class ShortcutsUpdaterTest : KoinTest {
@Test @Test
fun testUpdateShortcuts() = runTest { fun testUpdateShortcuts() = runTest {
shortcutsUpdater.await() awaitUpdate()
assertTrue(getShortcuts().isEmpty()) assertTrue(getShortcuts().isEmpty())
historyRepository.addOrUpdate( historyRepository.addOrUpdate(
manga = SampleData.manga, manga = SampleData.manga,
@@ -41,8 +41,7 @@ class ShortcutsUpdaterTest : KoinTest {
scroll = 2, scroll = 2,
percent = 0.3f percent = 0.3f
) )
delay(1000) awaitUpdate()
shortcutsUpdater.await()
val shortcuts = getShortcuts() val shortcuts = getShortcuts()
assertEquals(1, shortcuts.size) assertEquals(1, shortcuts.size)
@@ -53,4 +52,14 @@ class ShortcutsUpdaterTest : KoinTest {
val manager = checkNotNull(context.getSystemService<ShortcutManager>()) val manager = checkNotNull(context.getSystemService<ShortcutManager>())
return manager.dynamicShortcuts.filterNot { it.id == "com.squareup.leakcanary.dynamic_shortcut" } return manager.dynamicShortcuts.filterNot { it.id == "com.squareup.leakcanary.dynamic_shortcut" }
} }
private suspend fun awaitUpdate() {
val instrumentation = InstrumentationRegistry.getInstrumentation()
while (true) {
instrumentation.awaitForIdle()
if (shortcutsUpdater.await()) {
return
}
}
}
} }

View File

@@ -44,7 +44,7 @@ class AppBackupAgentTest : KoinTest {
scroll = 40, scroll = 40,
percent = 0.2f, percent = 0.2f,
) )
val history = checkNotNull(historyRepository.getOne(SampleData.mangaDetails)) val history = checkNotNull(historyRepository.getOne(SampleData.manga))
val agent = AppBackupAgent() val agent = AppBackupAgent()
val backup = agent.createBackupFile(get(), backupRepository) val backup = agent.createBackupFile(get(), backupRepository)

View File

@@ -52,8 +52,8 @@ class ShortcutsUpdater(
} }
@VisibleForTesting @VisibleForTesting
suspend fun await() { suspend fun await(): Boolean {
shortcutsUpdateJob?.join() return shortcutsUpdateJob?.join() != null
} }
private suspend fun updateShortcutsImpl() { private suspend fun updateShortcutsImpl() {