Skip to content

Commit

Permalink
Fix KoinTest.
Browse files Browse the repository at this point in the history
  • Loading branch information
Julia Jakubcova committed Dec 22, 2022
1 parent 5d50fc3 commit 9af991d
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 19 deletions.
39 changes: 28 additions & 11 deletions shared/src/androidTest/kotlin/co/touchlab/kampkit/KoinTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,18 @@ package co.touchlab.kampkit

import android.app.Application
import android.content.Context
import android.content.SharedPreferences
import androidx.test.core.app.ApplicationProvider.getApplicationContext
import androidx.test.ext.junit.runners.AndroidJUnit4
import co.touchlab.kermit.Logger
import co.touchlab.kermit.LoggerConfig
import kotlinx.coroutines.CoroutineDispatcher
import org.junit.experimental.categories.Category
import org.junit.runner.RunWith
import org.koin.core.annotation.KoinExperimentalAPI
import org.koin.core.context.stopKoin
import org.koin.core.parameter.parametersOf
import org.koin.dsl.module
import org.koin.test.category.CheckModuleTest
import org.koin.test.check.checkModules
import org.koin.test.verify.verify
import org.robolectric.annotation.Config
import kotlin.test.AfterTest
import kotlin.test.Test
Expand All @@ -21,18 +23,33 @@ import kotlin.test.Test
@Config(sdk = [32])
class KoinTest {

@OptIn(KoinExperimentalAPI::class)
@Test
fun checkAllModules() {
initKoin(
module {
single<Context> { getApplicationContext<Application>() }
single { get<Context>().getSharedPreferences("TEST", Context.MODE_PRIVATE) }
single<AppInfo> { TestAppInfo }
single { {} }
val testModule = module {
single<Context> { getApplicationContext<Application>() }
single<SharedPreferences> {
get<Context>().getSharedPreferences(
"TEST",
Context.MODE_PRIVATE
)
}
).checkModules {
withParameters<Logger> { parametersOf("TestTag") }
single<AppInfo> { TestAppInfo }
single { {} }

includes(
platformModule,
coreModule
)
}
testModule.verify(
extraTypes = listOf(
Boolean::class,
LoggerConfig::class,
String::class,
CoroutineDispatcher::class
)
)
}

@AfterTest
Expand Down
2 changes: 1 addition & 1 deletion shared/src/commonMain/kotlin/co/touchlab/kampkit/Koin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ fun initKoin(appModule: Module): KoinApplication {
return koinApplication
}

private val coreModule = module {
val coreModule = module {
single {
DatabaseHelper(
get(),
Expand Down
28 changes: 21 additions & 7 deletions shared/src/iosTest/kotlin/co/touchlab/kampkit/KoinTest.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,37 @@
package co.touchlab.kampkit

import co.touchlab.kermit.Logger
import com.russhwolf.settings.NSUserDefaultsSettings
import com.russhwolf.settings.Settings
import io.ktor.http.parametersOf
import org.koin.core.context.stopKoin
import org.koin.core.parameter.parametersOf
import org.koin.test.check.checkModules
import org.koin.dsl.module
import org.koin.test.check.CheckParameters
import org.koin.test.check.checkKoinModules
import platform.Foundation.NSUserDefaults
import kotlin.test.AfterTest
import kotlin.test.Test

class KoinTest {
@Test
fun checkAllModules() {
initKoinIos(
userDefaults = NSUserDefaults.standardUserDefaults,
appInfo = TestAppInfo,
doOnStartup = { }
).checkModules {
withParameters<Logger> { parametersOf("TestTag") }
val testModule = module {
single<Settings> { NSUserDefaultsSettings(NSUserDefaults.standardUserDefaults) }
single { TestAppInfo }
single { }

includes(
platformModule, coreModule
)
}
checkKoinModules(
modules = listOf(testModule),
parameters = {
withParameter<Logger> { "Test" }
withParameter<Settings> { false }
}
)
}

@AfterTest
Expand Down

0 comments on commit 9af991d

Please sign in to comment.