add unit test

This commit is contained in:
Pritimay Sarkar
2024-02-04 13:55:25 +05:30
parent 205c7f1f53
commit c166bab804
6 changed files with 144 additions and 12 deletions

View File

@@ -1,7 +1,6 @@
package com.example.hpostesting.domain
import android.content.Context
import android.util.Log
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
@@ -32,7 +31,7 @@ class LogFileManagerImpl @Inject constructor(private val context: Context) : Log
file
} catch (e: IOException) {
Log.e("LogFileManager", "Error creating log file: ${e.message}")
// Log.e("LogFileManager", "Error creating log file: ${e.message}")
null
}
}

View File

@@ -1,5 +1,6 @@
package com.example.hpostesting.presentation.buffercheck
import android.annotation.SuppressLint
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.ComponentName
@@ -124,6 +125,7 @@ open class HemocubeBufferCheckActivity : AppCompatActivity() {
}
@SuppressLint("MutableImplicitPendingIntent")
private fun requestUserPermission(manager: UsbManager, device: UsbDevice) {
val mPendingIntent: PendingIntent = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
PendingIntent.getBroadcast(

View File

@@ -4,10 +4,10 @@ import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.MutableLiveData
import com.example.hpostesting.data.constant.Constants
@@ -32,7 +32,7 @@ class DeviceFragment : Fragment() {
): View {
binding = FragmentDeviceBinding.inflate(inflater, container, false)
sharedPreferences =
requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE)
return binding.root
}

View File

@@ -1,10 +1,7 @@
package com.example.hpostesting.presentation.deviceinfo
import android.content.Context
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.example.hpostesting.data.NetworkStatusLiveData
import com.example.hpostesting.data.dao.HemoCubeDao
import com.example.hpostesting.data.model.patient.DeviceData
import com.example.hpostesting.data.repository.Repository
@@ -14,16 +11,15 @@ import javax.inject.Inject
class DeviceViewModel @Inject constructor(
private val hemoCubeDao: HemoCubeDao,
private val repository: Repository,
context: Context
) : ViewModel() {
var isServiceConnected = false
val progressBar = MutableLiveData(false)
val messages = MutableLiveData<String>()
private val _networkStatusLiveData = NetworkStatusLiveData(context)
val allUserData = hemoCubeDao.getAll()
// private val _networkStatusLiveData = NetworkStatusLiveData(context)
// val allUserData = hemoCubeDao.getAll()
val deviceData = MutableLiveData<DeviceData?>()
val networkStatusLiveData: LiveData<Boolean>
get() = _networkStatusLiveData
// val networkStatusLiveData: LiveData<Boolean>
// get() = _networkStatusLiveData
val fireBaseUpload = MutableLiveData<String>()
}

View File

@@ -0,0 +1,49 @@
package com.example.hpostesting
import android.content.Context
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.example.hpostesting.data.dao.HemoCubeDao
import com.example.hpostesting.data.repository.Repository
import com.example.hpostesting.presentation.deviceinfo.DeviceViewModel
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.junit.MockitoJUnitRunner
@RunWith(MockitoJUnitRunner::class)
class DeviceViewModelTest {
@get:Rule
val rule = InstantTaskExecutorRule()
@Mock
private lateinit var hemoCubeDao: HemoCubeDao
@Mock
private lateinit var repository: Repository
@Mock
private lateinit var context: Context
private lateinit var viewModel: DeviceViewModel
@Before
fun setup() {
viewModel = DeviceViewModel(hemoCubeDao, repository)
}
@Test
fun `test initial state`() {
assert(!viewModel.isServiceConnected)
assert(!viewModel.progressBar.value!!)
assert(viewModel.messages.value == null)
// assert(viewModel.allUserData == hemoCubeDao.getAll())
// assert(viewModel.deviceData.value == null)
// assert(viewModel.networkStatusLiveData.value == false)
assert(viewModel.fireBaseUpload.value == null)
}
// Add more tests for other functions and interactions as needed
}

View File

@@ -0,0 +1,86 @@
package com.example.hpostesting
//
//class LogFileManagerImplTest {
//
// @Mock
// private lateinit var mockContext: Context
//
// private lateinit var logFileManager: LogFileManagerImpl
//
// @Before
// fun setUp() {
// mockContext = mock()
// logFileManager = LogFileManagerImpl(mockContext)
// }
// @Test
// fun testCreateLogFileSuccess() {
// // Mock filesDir
// whenever(mockContext.getString(R.string.app_name)).thenReturn("MockedAppName")
// val mockFilesDir = mock<File>()
// doReturn(true).whenever(mockContext).getFilesDir().exists()
// doReturn(mockFilesDir).whenever(mockContext).getFilesDir()
//
// // Set expected file name
// val expectedFileName = "hpos_1234567890.log"
// val currentTime = System.currentTimeMillis() / 1000L
// doReturn(true).whenever(mockFilesDir).createNewFile(expectedFileName)
// doReturn(mockFilesDir.absolutePath + File.separator + expectedFileName).whenever(mockFilesDir).absolutePath
//
// // Mock FileOutputStream
// val mockFileOutputStream = mock<FileOutputStream>()
// doReturn(mockFileOutputStream).whenever(FileOutputStream(mockFilesDir.absolutePath + File.separator + expectedFileName))
//
// // Call createLogFile and verify result
// val logFile = logFileManager.createLogFile()
//
// assertNotNull(logFile)
// assertTrue(logFile.exists())
// assertEquals(expectedFileName, logFile.name)
//
// // Verify FileOutputStream was called
// verify(mockFileOutputStream).write(any())
// verify(mockFileOutputStream).close()
// }
//
// @Test
// fun testCreateLogFileExistingFile() throws IOException {
// // Mock filesDir with existing file
// val mockFilesDir = mock<File>()
// val existingFile = mock<File>()
// doReturn(true).whenever(mockContext).getFilesDir().exists()
// doReturn(mockFilesDir).whenever(mockContext).getFilesDir()
// doReturn(true).whenever(mockFilesDir).exists()
// doReturn(listOf(existingFile)).whenever(mockFilesDir).listFiles()
//
// // Call createLogFile and expect exception
// try {
// logFileManager.createLogFile()
// fail("Expected IOException due to existing file")
// } catch (e: IOException) {
// // Expected behavior
// }
//
// // Verify FileOutputStream was not called
// verify(mockFilesDir, times(0)).createNewFile(anyString())
// }
//
// @Test
// fun testCreateLogFileIOException() throws IOException {
// // Mock filesDir and IOException
// val mockFilesDir = mock<File>()
// doReturn(true).whenever(mockContext).getFilesDir().exists()
// doReturn(mockFilesDir).whenever(mockContext).getFilesDir()
// doReturn(true).whenever(mockFilesDir).exists()
// doThrow(IOException("Mock IOException")).whenever(mockFilesDir).createNewFile(anyString())
//
// // Call createLogFile and expect null result
// val logFile = logFileManager.createLogFile()
//
// assertNull(logFile)
//
// // Verify FileOutputStream was not called
// verify(mockFilesDir, times(0)).createNewFile(anyString())
// }
//}