diff --git a/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt b/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt index 40a7074..bfc531b 100644 --- a/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt +++ b/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt @@ -61,23 +61,23 @@ class DatabaseRepository @Inject constructor( return safeApiCall { molbioAuthApi.deviceProvision(deviceProvisionRequest) } } - suspend fun login(loginRequest: LoginRequest): Result { + override suspend fun login(loginRequest: LoginRequest): Result { return safeApiCall { molbioAuthApi.login(loginRequest) } } - suspend fun uploadResults(molbioV2ResultRequest: MolbioV2ResultRequest): Result { + override suspend fun uploadResults(molbioV2ResultRequest: MolbioV2ResultRequest): Result { return safeApiCall { molbioResultApi.uploadResults(molbioV2ResultRequest) } } - suspend fun checkUpdate(checkUpdateRequest: CheckUpdateRequest): Result { + override suspend fun checkUpdate(checkUpdateRequest: CheckUpdateRequest): Result { return safeApiCall { molbioResultApi.checkUpdate(checkUpdateRequest) } } - suspend fun deviceUpdate(deviceUpdateRequest: DeviceUpdateRequest): Result { + override suspend fun deviceUpdate(deviceUpdateRequest: DeviceUpdateRequest): Result { return safeApiCall { molbioResultApi.deviceUpdate(deviceUpdateRequest) } } - suspend fun uploadLogs(logFile: MultipartBody.Part): Result { + override suspend fun uploadLogs(logFile: MultipartBody.Part): Result { return safeApiCall { molbioResultApi.uploadLogs(logFile) } } diff --git a/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt b/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt index 3c60abf..b0f5a0d 100644 --- a/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt +++ b/app/src/main/java/com/example/hpostesting/data/repository/Repository.kt @@ -1,11 +1,22 @@ package com.example.hpostesting.data.repository +import com.example.hpostesting.data.Result import com.example.hpostesting.data.model.Response import com.example.hpostesting.data.model.diagnostics.DiagnosticsData +import com.example.hpostesting.data.model.log.UploadLogsResponse +import com.example.hpostesting.data.model.login.LoginRequest +import com.example.hpostesting.data.model.login.LoginResponse +import com.example.hpostesting.data.model.molbioresult.MolbioV2ResultRequest +import com.example.hpostesting.data.model.molbioresult.MolbioV2ResultResponse import com.example.hpostesting.data.model.patient.BufferCheckData import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.example.hpostesting.data.model.patient.UserData +import com.example.hpostesting.data.model.updates.CheckUpdateRequest +import com.example.hpostesting.data.model.updates.CheckUpdateResponse +import com.example.hpostesting.data.model.updates.DeviceUpdateRequest +import okhttp3.MultipartBody +import okhttp3.ResponseBody interface Repository { suspend fun addTestToDatabase(data: HemoCubeTestData?): Response @@ -21,4 +32,14 @@ interface Repository { suspend fun getDeviceDataById(deviceId: String): DeviceData? abstract fun addTestToDatabase(testDetails: UserData): Any // suspend fun addToDatabase(data: PatientDetails) + + suspend fun login(loginRequest: LoginRequest): Result + + suspend fun uploadResults(molbioV2ResultRequest: MolbioV2ResultRequest): Result + + suspend fun checkUpdate(checkUpdateRequest: CheckUpdateRequest): Result + + suspend fun deviceUpdate(deviceUpdateRequest: DeviceUpdateRequest): Result + + suspend fun uploadLogs(logFile: MultipartBody.Part): Result } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt index e2af3d1..c1fd72b 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt @@ -52,12 +52,12 @@ import java.util.Locale import java.util.concurrent.TimeUnit import javax.inject.Inject +@Suppress("MemberVisibilityCanBePrivate") @HiltViewModel class HemoCubeViewModel @Inject constructor( private val hemoCubeDao: HemoCubeDao, private val hemoCubeBufferDao: HemoCubeBufferDao, private val repository: Repository, - private val databaseRepository: DatabaseRepository, private val logFileManager: LogFileManager, private val localFileDataSource: LocalFileDataSource, context: Context, @@ -132,28 +132,28 @@ class HemoCubeViewModel @Inject constructor( fun login(loginRequest: LoginRequest) = viewModelScope.launch { loginResponse.postValue(Result.Loading()) - databaseRepository.login(loginRequest).let { + repository.login(loginRequest).let { loginResponse.postValue(it) } } fun uploadResult(molbioV2ResultRequest: MolbioV2ResultRequest) = viewModelScope.launch { resultUpload.postValue(Result.Loading()) - databaseRepository.uploadResults(molbioV2ResultRequest).let { + repository.uploadResults(molbioV2ResultRequest).let { resultUpload.postValue(it) } } fun checkUpdate(checkUpdateRequest: CheckUpdateRequest) = viewModelScope.launch { checkUpdate.postValue(Result.Loading()) - databaseRepository.checkUpdate(checkUpdateRequest).let { + repository.checkUpdate(checkUpdateRequest).let { checkUpdate.postValue(it) } } fun deviceUpdate(deviceUpdateRequest: DeviceUpdateRequest) = viewModelScope.launch { deviceUpdate.postValue(Result.Loading()) - databaseRepository.deviceUpdate(deviceUpdateRequest).let { + repository.deviceUpdate(deviceUpdateRequest).let { deviceUpdate.postValue(it) } } @@ -175,7 +175,7 @@ class HemoCubeViewModel @Inject constructor( val multipartFile = requestBody?.let { MultipartBody.Part.createFormData("logFile", file?.name, it) } multipartFile?.let { partFile -> - databaseRepository.uploadLogs(partFile).let { result -> + repository.uploadLogs(partFile).let { result -> uploadLogs.postValue(result) } } @@ -244,7 +244,7 @@ class HemoCubeViewModel @Inject constructor( deviceData.postValue(deviceId?.let { repository.getDeviceDataById(it) }) } - private fun parseData() { + fun parseData() { testDetails?.deviceRatio = DataHolder.hemocubeResult testDetails?.resultData = DataHolder.hemoCubeTestData?.resultData.toString() testDetails?.location = DataHolder.location @@ -528,7 +528,7 @@ class HemoCubeViewModel @Inject constructor( } } - private fun getCurrentDate(): String { + fun getCurrentDate(): String { return SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() ).format(Calendar.getInstance().time) diff --git a/app/src/test/java/com/example/hpostesting/HemocubeViewModelTest.kt b/app/src/test/java/com/example/hpostesting/HemocubeViewModelTest.kt index b3e709e..3eea382 100644 --- a/app/src/test/java/com/example/hpostesting/HemocubeViewModelTest.kt +++ b/app/src/test/java/com/example/hpostesting/HemocubeViewModelTest.kt @@ -1,8 +1,13 @@ package com.example.hpostesting +import android.content.Context import android.content.SharedPreferences -import android.view.View -import com.example.hpostesting.data.constant.Constants +import com.example.hpostesting.data.dao.HemoCubeBufferDao +import com.example.hpostesting.data.dao.HemoCubeDao +import com.example.hpostesting.data.datasource.LocalFileDataSource +import com.example.hpostesting.data.repository.DatabaseRepository +import com.example.hpostesting.data.repository.Repository +import com.example.hpostesting.domain.LogFileManager import com.example.hpostesting.presentation.hemocube.HemoCubeFragment import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel import com.example.hpostesting.presentation.hemocube.HemocubeActivity @@ -10,11 +15,8 @@ import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBindi import junit.framework.TestCase.assertEquals import org.junit.Before import org.junit.Test -import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyString -import org.mockito.ArgumentMatchers.eq import org.mockito.Mock -import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations @@ -28,12 +30,47 @@ class HemocubeViewModelTest { @Mock private lateinit var mockBinding: FragmentHemoCubeReferenceBinding // Replace with your actual Binding class + @Mock + private lateinit var mockContext: Context + + @Mock + private lateinit var hemoCubeDaoMock: HemoCubeDao + + @Mock + private lateinit var mockRepository: Repository + + @Mock + private lateinit var mockHemoCubeBufferDao: HemoCubeBufferDao + +// @Mock +// private lateinit var mockLogFileManager: LogFileManager +// +// @Mock +// private lateinit var mockLocalFileDataSource: LocalFileDataSource + private lateinit var hemoCubeFragment: HemoCubeFragment + private lateinit var hemoCubeViewModel: HemoCubeViewModel + @Before fun setUp() { - MockitoAnnotations.initMocks(this) + MockitoAnnotations.openMocks(this) hemoCubeFragment = HemoCubeFragment() +// hemoCubeViewModel = HemoCubeViewModel(hemoCubeDaoMock, mockHemoCubeBufferDao, mockRepository, mockLogFileManager, mockLocalFileDataSource, mockContext) + } + + @Test + fun `parseData test`() { + assertEquals(1, 1) + } + + @Test + fun `getCurrentDate returns date`() { +// `when`(hemoCubeViewModel.getCurrentDate()).thenReturn("1705429433") +// +// val result = hemoCubeViewModel.getCurrentDate() +// +// assertEquals("1705429433", hemoCubeViewModel.getCurrentDate()) } @Test