diff options
author | Allan Wang <me@allanwang.ca> | 2019-03-07 04:00:20 -0500 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2019-03-07 04:00:20 -0500 |
commit | f1878133d8af686ce8c27acffe28f26e9dda5165 (patch) | |
tree | 5d0d31d0581cb23495eea84437bdf74272081e20 /app/src/androidTest | |
parent | eabc8e3393cbd6b3dba5c70a5920075b8158d84e (diff) | |
download | frost-f1878133d8af686ce8c27acffe28f26e9dda5165.tar.gz frost-f1878133d8af686ce8c27acffe28f26e9dda5165.tar.bz2 frost-f1878133d8af686ce8c27acffe28f26e9dda5165.zip |
Add koin test
Diffstat (limited to 'app/src/androidTest')
-rw-r--r-- | app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt b/app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt new file mode 100644 index 00000000..1f1a201b --- /dev/null +++ b/app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt @@ -0,0 +1,38 @@ +package com.pitchedapps.frost.db + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import org.junit.runner.RunWith +import org.koin.error.NoBeanDefFoundException +import org.koin.standalone.get +import org.koin.test.KoinTest +import kotlin.reflect.KClass +import kotlin.reflect.full.functions +import kotlin.test.Test +import kotlin.test.assertTrue + +@RunWith(AndroidJUnit4::class) +class DatabaseTest : KoinTest { + + inline fun <reified T : Any> hasKoin() = hasKoin(T::class) + + fun <T : Any> hasKoin(klazz: KClass<T>): Boolean = + try { + get<T>(clazz = klazz) + true + } catch (e: NoBeanDefFoundException) { + false + } + + /** + * Database and all daos should be loaded as components + */ + @Test + fun testKoins() { + hasKoin<FrostDatabase>() + val members = FrostDatabase::class.java.kotlin.functions.filter { it.name.endsWith("Dao") } + .mapNotNull { it.returnType.classifier as? KClass<*> } + assertTrue(members.isNotEmpty(), "Failed to find dao interfaces") + val missingKoins = (members + FrostDatabase::class).filter { !hasKoin(it) } + assertTrue(missingKoins.isEmpty(), "Missing koins: $missingKoins") + } +}
\ No newline at end of file |