aboutsummaryrefslogtreecommitdiff
path: root/app/src/androidTest/kotlin/com
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2019-03-07 04:00:20 -0500
committerAllan Wang <me@allanwang.ca>2019-03-07 04:00:20 -0500
commitf1878133d8af686ce8c27acffe28f26e9dda5165 (patch)
tree5d0d31d0581cb23495eea84437bdf74272081e20 /app/src/androidTest/kotlin/com
parenteabc8e3393cbd6b3dba5c70a5920075b8158d84e (diff)
downloadfrost-f1878133d8af686ce8c27acffe28f26e9dda5165.tar.gz
frost-f1878133d8af686ce8c27acffe28f26e9dda5165.tar.bz2
frost-f1878133d8af686ce8c27acffe28f26e9dda5165.zip
Add koin test
Diffstat (limited to 'app/src/androidTest/kotlin/com')
-rw-r--r--app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt38
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