diff options
author | Allan Wang <me@allanwang.ca> | 2019-04-25 15:26:09 -0700 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2019-04-25 15:26:09 -0700 |
commit | 0b262754ad8489bda1ad21494b847652eb125aec (patch) | |
tree | 008b3dfd3ed44d1a6d3518a33d4a00ed65732bba /app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt | |
parent | ae6fdc31eb3c6d71391e825f7d3575b3565b8aea (diff) | |
parent | 00f25fee8c1b1f002a92d6c9b16088b1b8b33ba4 (diff) | |
download | frost-0b262754ad8489bda1ad21494b847652eb125aec.tar.gz frost-0b262754ad8489bda1ad21494b847652eb125aec.tar.bz2 frost-0b262754ad8489bda1ad21494b847652eb125aec.zip |
Merge dev
Diffstat (limited to 'app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt')
-rw-r--r-- | app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt | 54 |
1 files changed, 54 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..c79d212e --- /dev/null +++ b/app/src/androidTest/kotlin/com/pitchedapps/frost/db/DatabaseTest.kt @@ -0,0 +1,54 @@ +/* + * Copyright 2019 Allan Wang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +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") + } +} |