diff --git a/profile_gls/build.gradle.kts b/profile_gls/build.gradle.kts index 8c7f71e8..882173b4 100644 --- a/profile_gls/build.gradle.kts +++ b/profile_gls/build.gradle.kts @@ -66,6 +66,10 @@ dependencies { implementation(libs.androidx.activity.compose) implementation(libs.androidx.lifecycle.service) + testImplementation(libs.hilt.android.testing) + kaptTest(libs.hilt.compiler) + testImplementation(libs.androidx.test.rules) + testImplementation(libs.junit4) testImplementation(libs.test.mockk) testImplementation(libs.androidx.test.ext) diff --git a/profile_gls/src/debug/java/no/nordicsemi/android/gls/GlsServer.kt b/profile_gls/src/debug/java/no/nordicsemi/android/gls/GlsServer.kt index c1d5490c..ba97b841 100644 --- a/profile_gls/src/debug/java/no/nordicsemi/android/gls/GlsServer.kt +++ b/profile_gls/src/debug/java/no/nordicsemi/android/gls/GlsServer.kt @@ -9,6 +9,7 @@ import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import no.nordicsemi.android.common.core.DataByteArray +import no.nordicsemi.android.common.logger.BleLogger import no.nordicsemi.android.gls.main.viewmodel.BATTERY_LEVEL_CHARACTERISTIC_UUID import no.nordicsemi.android.gls.main.viewmodel.BATTERY_SERVICE_UUID import no.nordicsemi.android.gls.main.viewmodel.GLS_SERVICE_UUID @@ -106,7 +107,8 @@ class GlsServer @Inject constructor( server = ServerBleGatt.create( context = context, config = arrayOf(serviceConfig, batteryService), - mock = device + mock = device, + logger = { priority, log -> println(log) } ) val advertiser = BleAdvertiser.create(context) diff --git a/profile_gls/src/test/java/no/nordicsemi/android/gls/GLSViewModelTest.kt b/profile_gls/src/test/java/no/nordicsemi/android/gls/GLSViewModelTest.kt index 22f4c8ed..3a29991e 100644 --- a/profile_gls/src/test/java/no/nordicsemi/android/gls/GLSViewModelTest.kt +++ b/profile_gls/src/test/java/no/nordicsemi/android/gls/GLSViewModelTest.kt @@ -1,13 +1,13 @@ package no.nordicsemi.android.gls import android.content.Context +import dagger.hilt.android.testing.HiltAndroidTest +import dagger.hilt.android.testing.HiltTestApplication import io.mockk.every import io.mockk.impl.annotations.MockK import io.mockk.impl.annotations.RelaxedMockK import io.mockk.junit4.MockKRule import io.mockk.justRun -import io.mockk.mockk -import io.mockk.mockkObject import io.mockk.mockkStatic import io.mockk.spyk import kotlinx.coroutines.CoroutineScope @@ -19,20 +19,19 @@ import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain import no.nordicsemi.android.analytics.AppAnalytics -import no.nordicsemi.android.common.logger.NordicBlekLogger +import no.nordicsemi.android.common.core.ApplicationScope +import no.nordicsemi.android.common.logger.BleLoggerAndLauncher import no.nordicsemi.android.common.navigation.NavigationResult import no.nordicsemi.android.common.navigation.Navigator import no.nordicsemi.android.gls.data.WorkingMode import no.nordicsemi.android.gls.main.view.OnWorkingModeSelected import no.nordicsemi.android.gls.main.viewmodel.GLSViewModel -import no.nordicsemi.android.kotlin.ble.client.main.ClientScope import no.nordicsemi.android.kotlin.ble.core.MockServerDevice import no.nordicsemi.android.kotlin.ble.core.data.BleGattConnectionStatus import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionStateWithStatus import no.nordicsemi.android.kotlin.ble.profile.gls.GlucoseMeasurementParser import no.nordicsemi.android.kotlin.ble.profile.gls.data.RequestStatus -import no.nordicsemi.android.kotlin.ble.server.main.ServerScope import no.nordicsemi.android.ui.view.NordicLoggerFactory import no.nordicsemi.android.ui.view.StringConst import org.junit.After @@ -40,6 +39,9 @@ import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Rule import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config import kotlin.test.assertContentEquals /** @@ -47,6 +49,9 @@ import kotlin.test.assertContentEquals * * See [testing documentation](http://d.android.com/tools/testing). */ +@HiltAndroidTest +@Config(application = HiltTestApplication::class) +@RunWith(RobolectricTestRunner::class) internal class GLSViewModelTest { @get:Rule @@ -65,7 +70,7 @@ internal class GLSViewModelTest { lateinit var context: Context @RelaxedMockK - lateinit var logger: NordicBlekLogger + lateinit var logger: BleLoggerAndLauncher lateinit var viewModel: GLSViewModel @@ -89,10 +94,8 @@ internal class GLSViewModelTest { @Before fun before() { runBlocking { - mockkStatic("no.nordicsemi.android.kotlin.ble.client.main.ClientScopeKt") - every { ClientScope } returns CoroutineScope(UnconfinedTestDispatcher()) - mockkStatic("no.nordicsemi.android.kotlin.ble.server.main.ServerScopeKt") - every { ServerScope } returns CoroutineScope(UnconfinedTestDispatcher()) + mockkStatic("no.nordicsemi.android.common.core.ApplicationScopeKt") + every { ApplicationScope } returns CoroutineScope(UnconfinedTestDispatcher()) every { stringConst.APP_NAME } returns "Test" viewModel = spyk(GLSViewModel(context, navigator, analytics, stringConst, object : @@ -102,7 +105,7 @@ internal class GLSViewModelTest { profile: String?, key: String, name: String?, - ): NordicBlekLogger { + ): BleLoggerAndLauncher { return logger } @@ -114,12 +117,6 @@ internal class GLSViewModelTest { } } - @Before - fun prepareLogger() { - mockkObject(NordicBlekLogger.Companion) - every { NordicBlekLogger.create(any(), any(), any(), any()) } returns mockk() - } - @Test fun `when connection fails return disconnected`() = runTest { val disconnectedState = GattConnectionStateWithStatus(