release 2.1.97
This commit is contained in:
@@ -19,8 +19,8 @@ android {
|
|||||||
applicationId "in.sminnovations.hpostesting.quality"
|
applicationId "in.sminnovations.hpostesting.quality"
|
||||||
minSdk 21
|
minSdk 21
|
||||||
targetSdk 34
|
targetSdk 34
|
||||||
versionCode 95
|
versionCode 97
|
||||||
versionName "2.1.95"
|
versionName "2.1.97"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class DatabaseRepository @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun deviceProvision(deviceProvisionRequest: DeviceProvisionRequest): Result<DeviceProvisionResponse> {
|
override suspend fun deviceProvision(deviceProvisionRequest: DeviceProvisionRequest): Result<DeviceProvisionResponse> {
|
||||||
return safeApiCall { molbioAuthApi.deviceProvision(deviceProvisionRequest) }
|
return safeApiCall { molbioAuthApi.deviceProvision(deviceProvisionRequest) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.example.hpostesting.data.repository
|
|||||||
|
|
||||||
import com.example.hpostesting.data.Result
|
import com.example.hpostesting.data.Result
|
||||||
import com.example.hpostesting.data.model.Response
|
import com.example.hpostesting.data.model.Response
|
||||||
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
||||||
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
||||||
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
||||||
import com.example.hpostesting.data.model.log.UploadLogsResponse
|
import com.example.hpostesting.data.model.log.UploadLogsResponse
|
||||||
import com.example.hpostesting.data.model.login.LoginRequest
|
import com.example.hpostesting.data.model.login.LoginRequest
|
||||||
@@ -33,6 +35,8 @@ interface Repository {
|
|||||||
abstract fun <UserData> addTestToDatabase(testDetails: UserData): Any
|
abstract fun <UserData> addTestToDatabase(testDetails: UserData): Any
|
||||||
// suspend fun addToDatabase(data: PatientDetails)
|
// suspend fun addToDatabase(data: PatientDetails)
|
||||||
|
|
||||||
|
suspend fun deviceProvision(deviceProvisionRequest: DeviceProvisionRequest): Result<DeviceProvisionResponse>
|
||||||
|
|
||||||
suspend fun login(loginRequest: LoginRequest): Result<LoginResponse>
|
suspend fun login(loginRequest: LoginRequest): Result<LoginResponse>
|
||||||
|
|
||||||
suspend fun uploadResults(molbioV2ResultRequest: MolbioV2ResultRequest): Result<MolbioV2ResultResponse>
|
suspend fun uploadResults(molbioV2ResultRequest: MolbioV2ResultRequest): Result<MolbioV2ResultResponse>
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import android.view.ViewGroup
|
|||||||
import android.widget.AdapterView
|
import android.widget.AdapterView
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.Spinner
|
import android.widget.Spinner
|
||||||
import androidx.annotation.RequiresApi
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import com.example.hpostesting.data.DataHolder
|
import com.example.hpostesting.data.DataHolder
|
||||||
import com.example.hpostesting.data.constant.Constants
|
import com.example.hpostesting.data.constant.Constants
|
||||||
@@ -22,7 +21,7 @@ import `in`.sminnovations.hpostesting.databinding.FragmentAssuranceControlsBindi
|
|||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
|
|
||||||
class AssuranceControlsFragment: Fragment() {
|
class AssuranceControlsFragment: Fragment() {
|
||||||
private lateinit var binding: FragmentAssuranceControlsBinding
|
lateinit var binding: FragmentAssuranceControlsBinding
|
||||||
private lateinit var sharedPreferences: SharedPreferences
|
private lateinit var sharedPreferences: SharedPreferences
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
@@ -43,7 +42,7 @@ class AssuranceControlsFragment: Fragment() {
|
|||||||
// binding.btnSubmit.visibility = View.GONE
|
// binding.btnSubmit.visibility = View.GONE
|
||||||
|
|
||||||
val solutionSpinner: Spinner = binding.spinnerSolutions
|
val solutionSpinner: Spinner = binding.spinnerSolutions
|
||||||
val solutionOptions = arrayOf("Select solution", "KMnO4", "Tartrazine", "AR", "HB", "Blood")
|
val solutionOptions = arrayOf("Select solution", "Tartrazine", "AR")
|
||||||
val solutionAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, solutionOptions)
|
val solutionAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, solutionOptions)
|
||||||
solutionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
solutionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||||
solutionSpinner.adapter = solutionAdapter
|
solutionSpinner.adapter = solutionAdapter
|
||||||
@@ -65,7 +64,7 @@ class AssuranceControlsFragment: Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val concentrationSpinner: Spinner = binding.spinnerConcentration
|
val concentrationSpinner: Spinner = binding.spinnerConcentration
|
||||||
val concentrationOptions = arrayOf("Select concentration", "250umol", "350umol", "450umol", "550umol", "650umol")
|
val concentrationOptions = arrayOf("Select concentration", "65umol", "45umol", "22.5umol", "12.25umol", "6.125umol", "75umol", "50umol", "25umol", "12.5umol", "6.25umol")
|
||||||
val concentrationAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, concentrationOptions)
|
val concentrationAdapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, concentrationOptions)
|
||||||
concentrationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
concentrationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||||
concentrationSpinner.adapter = concentrationAdapter
|
concentrationSpinner.adapter = concentrationAdapter
|
||||||
|
|||||||
@@ -1,29 +1,22 @@
|
|||||||
package com.example.hpostesting.presentation.deviceprovision
|
package com.example.hpostesting.presentation.deviceprovision
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import androidx.lifecycle.LiveData
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.example.hpostesting.data.NetworkStatusLiveData
|
|
||||||
import com.example.hpostesting.data.Result
|
import com.example.hpostesting.data.Result
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
||||||
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
||||||
import com.example.hpostesting.data.repository.DatabaseRepository
|
import com.example.hpostesting.data.repository.Repository
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class DeviceProvisionViewModel @Inject constructor(
|
class DeviceProvisionViewModel @Inject constructor(
|
||||||
private val databaseRepository: DatabaseRepository,
|
private val databaseRepository: Repository
|
||||||
context: Context
|
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
var isServiceConnected = false
|
var isServiceConnected = false
|
||||||
private val _networkStatusLiveData = NetworkStatusLiveData(context)
|
|
||||||
val networkStatusLiveData: LiveData<Boolean>
|
|
||||||
get() = _networkStatusLiveData
|
|
||||||
|
|
||||||
val deviceProvisionResponse = MutableLiveData<Result<DeviceProvisionResponse>>()
|
val deviceProvisionResponse = MutableLiveData<Result<DeviceProvisionResponse>>()
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +1,22 @@
|
|||||||
package com.example.hpostesting.presentation.diagnostics
|
package com.example.hpostesting.presentation.diagnostics
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.SharedPreferences
|
|
||||||
import android.util.Log
|
|
||||||
import androidx.lifecycle.LiveData
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.example.hpostesting.data.DataHolder
|
|
||||||
import com.example.hpostesting.data.NetworkStatusLiveData
|
|
||||||
import com.example.hpostesting.data.constant.Constants
|
|
||||||
import com.example.hpostesting.data.dao.HemoCubeDao
|
|
||||||
import com.example.hpostesting.data.model.Response
|
import com.example.hpostesting.data.model.Response
|
||||||
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
||||||
import com.example.hpostesting.data.model.patient.DeviceData
|
import com.example.hpostesting.data.model.patient.DeviceData
|
||||||
import com.example.hpostesting.data.model.patient.HemoCubeTestData
|
import com.example.hpostesting.data.repository.Repository
|
||||||
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
|
||||||
import com.example.hpostesting.data.repository.DatabaseRepository
|
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.Calendar
|
|
||||||
import java.util.Locale
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class DiagnosticsViewModel @Inject constructor(
|
class DiagnosticsViewModel @Inject constructor(
|
||||||
private val hemoCubeDao: HemoCubeDao,
|
private val repository: Repository
|
||||||
private val repository: DatabaseRepository,
|
|
||||||
context: Context
|
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
var isServiceConnected = false
|
var isServiceConnected = false
|
||||||
val progressBar = MutableLiveData(false)
|
val progressBar = MutableLiveData(false)
|
||||||
val messages = MutableLiveData<String>()
|
val messages = MutableLiveData<String>()
|
||||||
private val sharedPreference: SharedPreferences =
|
|
||||||
context.getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE)
|
|
||||||
|
|
||||||
val deviceData = MutableLiveData<DeviceData?>()
|
val deviceData = MutableLiveData<DeviceData?>()
|
||||||
val fireBaseUpload = MutableLiveData<String>()
|
val fireBaseUpload = MutableLiveData<String>()
|
||||||
|
|||||||
@@ -62,6 +62,7 @@
|
|||||||
<Spinner
|
<Spinner
|
||||||
android:id="@+id/spinner_volume"
|
android:id="@+id/spinner_volume"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
android:visibility="gone"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="52dp"
|
android:layout_marginTop="52dp"
|
||||||
android:background="@drawable/spinner_border"
|
android:background="@drawable/spinner_border"
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package com.example.hpostesting
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import com.example.hpostesting.presentation.assurance.AssuranceControlsFragment
|
||||||
|
import junit.framework.TestCase.assertEquals
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
|
import org.mockito.Mock
|
||||||
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
|
class AssuranceControlsFragmentTest {
|
||||||
|
@Mock
|
||||||
|
lateinit var sharedPreferences: SharedPreferences
|
||||||
|
|
||||||
|
private lateinit var assuranceControlsFragment: AssuranceControlsFragment
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this)
|
||||||
|
assuranceControlsFragment = AssuranceControlsFragment()
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Test
|
||||||
|
// fun testInitViews() {
|
||||||
|
// val fragmentScenario = FragmentScenario.launchInContainer(AssuranceControlsFragment::class.java)
|
||||||
|
//
|
||||||
|
// fragmentScenario.onFragment { fragment ->
|
||||||
|
// // Mock the shared preferences
|
||||||
|
// `when`(fragment.requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE)).thenReturn(sharedPreferences)
|
||||||
|
//
|
||||||
|
// // Mock the solution spinner selection
|
||||||
|
// fragment.binding.spinnerSolutions.setSelection(1)
|
||||||
|
//
|
||||||
|
// // Verify that DataHolder.hemoCubeTestData!!.solution is set correctly
|
||||||
|
// assertEquals("KMnO4", DataHolder.hemoCubeTestData!!.solution)
|
||||||
|
//
|
||||||
|
// // You can similarly test other parts of initViews() based on your requirements
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testGetPositionOfValue() {
|
||||||
|
val fragment = AssuranceControlsFragment()
|
||||||
|
|
||||||
|
val testData = listOf("Select solution", "KMnO4", "Tartrazine", "AR", "HB", "Blood")
|
||||||
|
|
||||||
|
// Test a value that exists in the list
|
||||||
|
val positionKMnO4 = fragment.getPositionOfValue("KMnO4", testData)
|
||||||
|
assertEquals(1, positionKMnO4)
|
||||||
|
|
||||||
|
// Test a value that does not exist in the list
|
||||||
|
val positionNonExistent = fragment.getPositionOfValue("NonExistent", testData)
|
||||||
|
assertEquals(0, positionNonExistent)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
package com.example.hpostesting
|
||||||
|
|
||||||
|
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
||||||
|
import androidx.lifecycle.Observer
|
||||||
|
import com.example.hpostesting.data.Result
|
||||||
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest
|
||||||
|
import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionResponse
|
||||||
|
import com.example.hpostesting.data.repository.Repository
|
||||||
|
import com.example.hpostesting.presentation.deviceprovision.DeviceProvisionViewModel
|
||||||
|
import com.example.hpostesting.util.TestCoroutineRule
|
||||||
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import kotlinx.coroutines.test.runBlockingTest
|
||||||
|
import org.junit.After
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.mockito.Mock
|
||||||
|
import org.mockito.Mockito
|
||||||
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
|
@ExperimentalCoroutinesApi
|
||||||
|
class DeviceProvisionViewModelTest {
|
||||||
|
|
||||||
|
// Rule to make LiveData updates instant
|
||||||
|
@get:Rule
|
||||||
|
val instantExecutorRule = InstantTaskExecutorRule()
|
||||||
|
|
||||||
|
// Rule for testing coroutines
|
||||||
|
@get:Rule
|
||||||
|
val coroutineRule = TestCoroutineRule()
|
||||||
|
|
||||||
|
// Mocks
|
||||||
|
@Mock
|
||||||
|
private lateinit var databaseRepository: Repository
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var deviceProvisionObserver: Observer<Result<DeviceProvisionResponse>>
|
||||||
|
|
||||||
|
// Class under test
|
||||||
|
private lateinit var viewModel: DeviceProvisionViewModel
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
MockitoAnnotations.openMocks(this)
|
||||||
|
viewModel = DeviceProvisionViewModel(databaseRepository)
|
||||||
|
viewModel.deviceProvisionResponse.observeForever(deviceProvisionObserver)
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun tearDown() {
|
||||||
|
viewModel.deviceProvisionResponse.removeObserver(deviceProvisionObserver)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `deviceProvision success`() = coroutineRule.runBlockingTest {
|
||||||
|
// Arrange
|
||||||
|
val deviceProvisionRequest = DeviceProvisionRequest(/* provide necessary parameters */)
|
||||||
|
val expectedResult = Result.Success(DeviceProvisionResponse(/* provide necessary response data */))
|
||||||
|
Mockito.`when`(databaseRepository.deviceProvision(deviceProvisionRequest)).thenReturn(expectedResult)
|
||||||
|
|
||||||
|
// Act
|
||||||
|
viewModel.deviceProvision(deviceProvisionRequest)
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
// Mockito.verify(deviceProvisionObserver, Mockito.timeout(1000)).onChanged(Result.Loading())
|
||||||
|
Mockito.verify(deviceProvisionObserver, Mockito.timeout(1000)).onChanged(expectedResult)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `deviceProvision error`() = coroutineRule.runBlockingTest {
|
||||||
|
// Arrange
|
||||||
|
val deviceProvisionRequest = DeviceProvisionRequest(/* provide necessary parameters */)
|
||||||
|
val expectedError = Result.Error(Exception("Test error"))
|
||||||
|
Mockito.`when`(databaseRepository.deviceProvision(deviceProvisionRequest)).thenReturn(expectedError)
|
||||||
|
|
||||||
|
// Act
|
||||||
|
viewModel.deviceProvision(deviceProvisionRequest)
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
// Mockito.verify(deviceProvisionObserver, Mockito.timeout(1000)).onChanged(Result.Loading())
|
||||||
|
Mockito.verify(deviceProvisionObserver, Mockito.timeout(1000)).onChanged(expectedError)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
package com.example.hpostesting
|
||||||
|
|
||||||
|
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
||||||
|
import androidx.lifecycle.Observer
|
||||||
|
import com.example.hpostesting.data.model.Response
|
||||||
|
import com.example.hpostesting.data.model.diagnostics.DiagnosticsData
|
||||||
|
import com.example.hpostesting.data.repository.Repository
|
||||||
|
import com.example.hpostesting.presentation.diagnostics.DiagnosticsViewModel
|
||||||
|
import io.mockk.coEvery
|
||||||
|
import io.mockk.mockk
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import kotlinx.coroutines.test.TestCoroutineDispatcher
|
||||||
|
import kotlinx.coroutines.test.TestCoroutineScope
|
||||||
|
import kotlinx.coroutines.test.runBlockingTest
|
||||||
|
import kotlinx.coroutines.test.setMain
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.mockito.Mock
|
||||||
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
|
@ExperimentalCoroutinesApi
|
||||||
|
class DiagnosticsViewModelTest {
|
||||||
|
|
||||||
|
// Use this rule to swap the background executor used by the Architecture Components
|
||||||
|
@get:Rule
|
||||||
|
var instantTaskExecutorRule = InstantTaskExecutorRule()
|
||||||
|
|
||||||
|
// Use this dispatcher to control execution of coroutines in tests
|
||||||
|
private val testDispatcher = TestCoroutineDispatcher()
|
||||||
|
|
||||||
|
// Use this scope to control the execution of coroutines in tests
|
||||||
|
private val testCoroutineScope = TestCoroutineScope(testDispatcher)
|
||||||
|
|
||||||
|
// Mock Repository
|
||||||
|
private val mockRepository = mockk<Repository>()
|
||||||
|
|
||||||
|
// Mock Observer for LiveData
|
||||||
|
@Mock
|
||||||
|
private lateinit var mockObserver: Observer<String>
|
||||||
|
|
||||||
|
// Subject under test
|
||||||
|
private lateinit var diagnosticsViewModel: DiagnosticsViewModel
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setup() {
|
||||||
|
// Initialize mocks
|
||||||
|
MockitoAnnotations.openMocks(this)
|
||||||
|
|
||||||
|
// Create the ViewModel with the mock repository and set the coroutine dispatcher
|
||||||
|
diagnosticsViewModel = DiagnosticsViewModel(repository = mockRepository)
|
||||||
|
// diagnosticsViewModel.viewModelScope = testCoroutineScope
|
||||||
|
|
||||||
|
// Observe the LiveData
|
||||||
|
// diagnosticsViewModel.fireBaseUpload.observeForever(mockObserver)
|
||||||
|
|
||||||
|
Dispatchers.setMain(TestCoroutineDispatcher())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test addDiagnosticsDataToDb success`() = runBlocking {
|
||||||
|
// Given
|
||||||
|
val diagnosticsData = mockk<DiagnosticsData>()
|
||||||
|
coEvery { mockRepository.addDiagnostics(diagnosticsData) } returns Response.Success("Success")
|
||||||
|
|
||||||
|
// When
|
||||||
|
diagnosticsViewModel.addDiagnosticsDataToDb(diagnosticsData)
|
||||||
|
|
||||||
|
// Then
|
||||||
|
assert(diagnosticsViewModel.fireBaseUpload.value == "Success")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `addDiagnosticsDataToDb error`() = testCoroutineScope.runBlockingTest {
|
||||||
|
// Given
|
||||||
|
coEvery { mockRepository.addDiagnostics(any()) } returns Response.Error(Exception("Test error"))
|
||||||
|
|
||||||
|
// When
|
||||||
|
diagnosticsViewModel.addDiagnosticsDataToDb(mockk())
|
||||||
|
|
||||||
|
// Then
|
||||||
|
assert(diagnosticsViewModel.fireBaseUpload.value == "Error")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user