mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2025-12-28 20:04:25 +01:00
Make logger mockable
This commit is contained in:
@@ -43,7 +43,7 @@ import kotlinx.coroutines.flow.onEach
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
import no.nordicsemi.android.analytics.ProfileOpenEvent
|
||||
import no.nordicsemi.android.cgms.repository.CGMRepository
|
||||
import no.nordicsemi.android.common.logger.NordicLogger
|
||||
import no.nordicsemi.android.common.logger.LoggerLauncher
|
||||
import no.nordicsemi.android.common.navigation.DestinationId
|
||||
import no.nordicsemi.android.common.navigation.Navigator
|
||||
import no.nordicsemi.android.csc.repository.CSCRepository
|
||||
@@ -114,7 +114,7 @@ class HomeViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
fun openLogger() {
|
||||
NordicLogger.launch(context, logger = null)
|
||||
LoggerLauncher.launch(context)
|
||||
}
|
||||
|
||||
fun logEvent(event: ProfileOpenEvent) {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package no.nordicsemi.android.ui.view
|
||||
|
||||
import android.content.Context
|
||||
import no.nordicsemi.android.common.logger.BlekLogger
|
||||
import no.nordicsemi.android.common.logger.BlekLoggerAndLauncher
|
||||
|
||||
interface NordicLoggerFactory {
|
||||
|
||||
fun createNordicLogger(context: Context, profile: String?, key: String, name: String?): BlekLoggerAndLauncher
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package no.nordicsemi.android.ui.view
|
||||
|
||||
import android.content.Context
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import no.nordicsemi.android.common.logger.NordicBlekLogger
|
||||
import no.nordicsemi.android.common.logger.BlekLogger
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
class UiModule {
|
||||
|
||||
@Provides
|
||||
fun createLogger(): NordicLoggerFactory {
|
||||
return object : NordicLoggerFactory {
|
||||
override fun createNordicLogger(
|
||||
context: Context,
|
||||
profile: String?,
|
||||
key: String,
|
||||
name: String?,
|
||||
): BlekLogger {
|
||||
return NordicBlekLogger.create(context, profile, key, name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,6 @@ import no.nordicsemi.android.kotlin.ble.profile.csc.data.CSCData
|
||||
import no.nordicsemi.android.kotlin.ble.profile.csc.data.WheelSize
|
||||
import no.nordicsemi.android.kotlin.ble.profile.csc.data.WheelSizes
|
||||
import no.nordicsemi.android.service.DisconnectAndStopEvent
|
||||
import no.nordicsemi.android.service.OpenLoggerEvent
|
||||
import no.nordicsemi.android.service.ServiceManager
|
||||
import no.nordicsemi.android.ui.view.StringConst
|
||||
import javax.inject.Inject
|
||||
|
||||
@@ -41,7 +41,6 @@ import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.mapNotNull
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.common.logger.NordicBlekLogger
|
||||
import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient
|
||||
import no.nordicsemi.android.kotlin.ble.client.main.connect
|
||||
import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices
|
||||
@@ -52,7 +51,7 @@ import no.nordicsemi.android.kotlin.ble.profile.battery.BatteryLevelParser
|
||||
import no.nordicsemi.android.kotlin.ble.profile.csc.CSCDataParser
|
||||
import no.nordicsemi.android.service.DEVICE_DATA
|
||||
import no.nordicsemi.android.service.NotificationService
|
||||
import no.nordicsemi.android.ui.view.StringConst
|
||||
import no.nordicsemi.android.ui.view.NordicLoggerFactory
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
import no.nordicsemi.android.analytics.Profile
|
||||
import no.nordicsemi.android.analytics.ProfileConnectedEvent
|
||||
import no.nordicsemi.android.common.logger.NordicBlekLogger
|
||||
import no.nordicsemi.android.common.navigation.NavigationResult
|
||||
import no.nordicsemi.android.common.navigation.Navigator
|
||||
import no.nordicsemi.android.gls.GlsDetailsDestinationId
|
||||
@@ -68,6 +67,8 @@ import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices
|
||||
import no.nordicsemi.android.kotlin.ble.core.ServerDevice
|
||||
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState
|
||||
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionStateWithStatus
|
||||
import no.nordicsemi.android.common.logger.BlekLogger
|
||||
import no.nordicsemi.android.common.logger.BlekLoggerAndLauncher
|
||||
import no.nordicsemi.android.kotlin.ble.profile.battery.BatteryLevelParser
|
||||
import no.nordicsemi.android.kotlin.ble.profile.gls.GlucoseMeasurementContextParser
|
||||
import no.nordicsemi.android.kotlin.ble.profile.gls.GlucoseMeasurementParser
|
||||
@@ -81,6 +82,7 @@ import no.nordicsemi.android.kotlin.ble.profile.gls.data.ResponseData
|
||||
import no.nordicsemi.android.kotlin.ble.profile.racp.RACPOpCode
|
||||
import no.nordicsemi.android.kotlin.ble.profile.racp.RACPResponseCode
|
||||
import no.nordicsemi.android.toolbox.scanner.ScannerDestinationId
|
||||
import no.nordicsemi.android.ui.view.NordicLoggerFactory
|
||||
import no.nordicsemi.android.ui.view.StringConst
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
@@ -102,11 +104,12 @@ internal class GLSViewModel @Inject constructor(
|
||||
private val context: Context,
|
||||
private val navigationManager: Navigator,
|
||||
private val analytics: AppAnalytics,
|
||||
private val stringConst: StringConst
|
||||
private val stringConst: StringConst,
|
||||
private val loggerFactory: NordicLoggerFactory
|
||||
) : ViewModel() {
|
||||
|
||||
internal lateinit var client: BleGattClient
|
||||
private lateinit var logger: NordicBlekLogger
|
||||
private lateinit var logger: BlekLoggerAndLauncher
|
||||
|
||||
internal lateinit var glucoseMeasurementCharacteristic: BleGattCharacteristic
|
||||
internal lateinit var recordAccessControlPointCharacteristic: BleGattCharacteristic
|
||||
@@ -168,7 +171,7 @@ internal class GLSViewModel @Inject constructor(
|
||||
private fun startGattClient(device: ServerDevice) = viewModelScope.launch {
|
||||
_state.value = _state.value.copy(deviceName = device.name)
|
||||
|
||||
logger = NordicBlekLogger.create(context, stringConst.APP_NAME, "GLS", device.address)
|
||||
logger = loggerFactory.createNordicLogger(context, stringConst.APP_NAME, "GLS", device.address)
|
||||
|
||||
client = device.connect(context, logger = logger)
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ 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.data.RequestStatus
|
||||
import no.nordicsemi.android.ui.view.NordicLoggerFactory
|
||||
import no.nordicsemi.android.ui.view.StringConst
|
||||
import org.junit.After
|
||||
import org.junit.Assert.assertEquals
|
||||
@@ -41,7 +42,6 @@ import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.shadows.ShadowBluetoothGatt
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
@@ -94,7 +94,18 @@ internal class GLSViewModelTest {
|
||||
@Before
|
||||
fun before() {
|
||||
runBlocking {
|
||||
viewModel = spyk(GLSViewModel(context, navigator, analytics, stringConst))
|
||||
viewModel = spyk(GLSViewModel(context, navigator, analytics, stringConst, object :
|
||||
NordicLoggerFactory {
|
||||
override fun createNordicLogger(
|
||||
context: Context,
|
||||
profile: String?,
|
||||
key: String,
|
||||
name: String?,
|
||||
): NordicBlekLogger {
|
||||
return logger
|
||||
}
|
||||
|
||||
}))
|
||||
glsServer = GlsServer(CoroutineScope(UnconfinedTestDispatcher()))
|
||||
glsServer.start(spyk(), device)
|
||||
}
|
||||
|
||||
@@ -45,7 +45,6 @@ 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.hrs.data.HRSData
|
||||
import no.nordicsemi.android.service.DisconnectAndStopEvent
|
||||
import no.nordicsemi.android.service.OpenLoggerEvent
|
||||
import no.nordicsemi.android.service.ServiceManager
|
||||
import no.nordicsemi.android.ui.view.StringConst
|
||||
import javax.inject.Inject
|
||||
|
||||
@@ -43,7 +43,6 @@ import no.nordicsemi.android.kotlin.ble.core.ServerDevice
|
||||
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState
|
||||
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionStateWithStatus
|
||||
import no.nordicsemi.android.service.DisconnectAndStopEvent
|
||||
import no.nordicsemi.android.service.OpenLoggerEvent
|
||||
import no.nordicsemi.android.service.ServiceManager
|
||||
import no.nordicsemi.android.uart.data.ConfigurationDataSource
|
||||
import no.nordicsemi.android.uart.data.MacroEol
|
||||
|
||||
Reference in New Issue
Block a user