Fix tests

This commit is contained in:
Sylwester Zieliński
2023-08-06 12:37:01 +02:00
parent dc1ca1e139
commit 5cb0e67b44
3 changed files with 21 additions and 18 deletions

View File

@@ -66,6 +66,10 @@ dependencies {
implementation(libs.androidx.activity.compose) implementation(libs.androidx.activity.compose)
implementation(libs.androidx.lifecycle.service) implementation(libs.androidx.lifecycle.service)
testImplementation(libs.hilt.android.testing)
kaptTest(libs.hilt.compiler)
testImplementation(libs.androidx.test.rules)
testImplementation(libs.junit4) testImplementation(libs.junit4)
testImplementation(libs.test.mockk) testImplementation(libs.test.mockk)
testImplementation(libs.androidx.test.ext) testImplementation(libs.androidx.test.ext)

View File

@@ -9,6 +9,7 @@ import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import no.nordicsemi.android.common.core.DataByteArray 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_LEVEL_CHARACTERISTIC_UUID
import no.nordicsemi.android.gls.main.viewmodel.BATTERY_SERVICE_UUID import no.nordicsemi.android.gls.main.viewmodel.BATTERY_SERVICE_UUID
import no.nordicsemi.android.gls.main.viewmodel.GLS_SERVICE_UUID import no.nordicsemi.android.gls.main.viewmodel.GLS_SERVICE_UUID
@@ -106,7 +107,8 @@ class GlsServer @Inject constructor(
server = ServerBleGatt.create( server = ServerBleGatt.create(
context = context, context = context,
config = arrayOf(serviceConfig, batteryService), config = arrayOf(serviceConfig, batteryService),
mock = device mock = device,
logger = { priority, log -> println(log) }
) )
val advertiser = BleAdvertiser.create(context) val advertiser = BleAdvertiser.create(context)

View File

@@ -1,13 +1,13 @@
package no.nordicsemi.android.gls package no.nordicsemi.android.gls
import android.content.Context import android.content.Context
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.HiltTestApplication
import io.mockk.every import io.mockk.every
import io.mockk.impl.annotations.MockK import io.mockk.impl.annotations.MockK
import io.mockk.impl.annotations.RelaxedMockK import io.mockk.impl.annotations.RelaxedMockK
import io.mockk.junit4.MockKRule import io.mockk.junit4.MockKRule
import io.mockk.justRun import io.mockk.justRun
import io.mockk.mockk
import io.mockk.mockkObject
import io.mockk.mockkStatic import io.mockk.mockkStatic
import io.mockk.spyk import io.mockk.spyk
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@@ -19,20 +19,19 @@ import kotlinx.coroutines.test.resetMain
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.test.setMain import kotlinx.coroutines.test.setMain
import no.nordicsemi.android.analytics.AppAnalytics 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.NavigationResult
import no.nordicsemi.android.common.navigation.Navigator import no.nordicsemi.android.common.navigation.Navigator
import no.nordicsemi.android.gls.data.WorkingMode import no.nordicsemi.android.gls.data.WorkingMode
import no.nordicsemi.android.gls.main.view.OnWorkingModeSelected import no.nordicsemi.android.gls.main.view.OnWorkingModeSelected
import no.nordicsemi.android.gls.main.viewmodel.GLSViewModel 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.MockServerDevice
import no.nordicsemi.android.kotlin.ble.core.data.BleGattConnectionStatus 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.GattConnectionState
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionStateWithStatus 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.GlucoseMeasurementParser
import no.nordicsemi.android.kotlin.ble.profile.gls.data.RequestStatus 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.NordicLoggerFactory
import no.nordicsemi.android.ui.view.StringConst import no.nordicsemi.android.ui.view.StringConst
import org.junit.After import org.junit.After
@@ -40,6 +39,9 @@ import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
import kotlin.test.assertContentEquals import kotlin.test.assertContentEquals
/** /**
@@ -47,6 +49,9 @@ import kotlin.test.assertContentEquals
* *
* See [testing documentation](http://d.android.com/tools/testing). * See [testing documentation](http://d.android.com/tools/testing).
*/ */
@HiltAndroidTest
@Config(application = HiltTestApplication::class)
@RunWith(RobolectricTestRunner::class)
internal class GLSViewModelTest { internal class GLSViewModelTest {
@get:Rule @get:Rule
@@ -65,7 +70,7 @@ internal class GLSViewModelTest {
lateinit var context: Context lateinit var context: Context
@RelaxedMockK @RelaxedMockK
lateinit var logger: NordicBlekLogger lateinit var logger: BleLoggerAndLauncher
lateinit var viewModel: GLSViewModel lateinit var viewModel: GLSViewModel
@@ -89,10 +94,8 @@ internal class GLSViewModelTest {
@Before @Before
fun before() { fun before() {
runBlocking { runBlocking {
mockkStatic("no.nordicsemi.android.kotlin.ble.client.main.ClientScopeKt") mockkStatic("no.nordicsemi.android.common.core.ApplicationScopeKt")
every { ClientScope } returns CoroutineScope(UnconfinedTestDispatcher()) every { ApplicationScope } returns CoroutineScope(UnconfinedTestDispatcher())
mockkStatic("no.nordicsemi.android.kotlin.ble.server.main.ServerScopeKt")
every { ServerScope } returns CoroutineScope(UnconfinedTestDispatcher())
every { stringConst.APP_NAME } returns "Test" every { stringConst.APP_NAME } returns "Test"
viewModel = spyk(GLSViewModel(context, navigator, analytics, stringConst, object : viewModel = spyk(GLSViewModel(context, navigator, analytics, stringConst, object :
@@ -102,7 +105,7 @@ internal class GLSViewModelTest {
profile: String?, profile: String?,
key: String, key: String,
name: String?, name: String?,
): NordicBlekLogger { ): BleLoggerAndLauncher {
return logger 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 @Test
fun `when connection fails return disconnected`() = runTest { fun `when connection fails return disconnected`() = runTest {
val disconnectedState = GattConnectionStateWithStatus( val disconnectedState = GattConnectionStateWithStatus(