Skip to content

Commit cc2197c

Browse files
committed
tests: make sure all branches are covered for getArduinoType
1 parent ce5e28d commit cc2197c

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

app/src/test/java/org/kabiri/android/usbterminal/viewmodel/MainActivityViewModelTest.kt

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import org.kabiri.android.usbterminal.util.IResourceProvider
2727
import org.kabiri.android.usbterminal.util.isCloneArduinoBoard
2828
import org.kabiri.android.usbterminal.util.isOfficialArduinoBoard
2929

30+
private const val OFFICIAL_VENDOR_ID = 0x0043
31+
3032
@OptIn(ExperimentalCoroutinesApi::class)
3133
internal class MainActivityViewModelTest {
3234
private val testDispatcher: TestDispatcher = StandardTestDispatcher()
@@ -59,7 +61,7 @@ internal class MainActivityViewModelTest {
5961
fun `startObservingUsbDevice updates infoMessage and calls openDeviceAndPort when device is emitted`() =
6062
runTest {
6163
// arrange
62-
val expected = 0x0043
64+
val expected = OFFICIAL_VENDOR_ID
6365
val deviceFlow = MutableStateFlow<UsbDevice?>(null)
6466
val mockDevice: UsbDevice = mockk(relaxed = true)
6567
every { mockDevice.vendorId } returns expected
@@ -134,6 +136,28 @@ internal class MainActivityViewModelTest {
134136
verify(exactly = 1) { mockUsbUseCase.requestPermission(fakeDevice) }
135137
}
136138

139+
@Test
140+
fun `connect emits expected message and calls requestPermission when the device is neither official nor a clone`() =
141+
runTest {
142+
// arrange
143+
val expected = "connecting anyways"
144+
145+
val fakeDevice: UsbDevice = mockk(relaxed = true)
146+
mockkStatic(UsbDevice::isOfficialArduinoBoard, UsbDevice::isCloneArduinoBoard)
147+
every { fakeDevice.isOfficialArduinoBoard() } returns false
148+
every { fakeDevice.isCloneArduinoBoard() } returns false
149+
150+
every { mockUsbUseCase.scanForUsbDevices() } returns listOf(fakeDevice)
151+
every { mockResourceProvider.getString(R.string.helper_error_connecting_anyway) } returns expected
152+
153+
// act
154+
sut.connect()
155+
156+
// assert
157+
assertThat(sut.infoMessage.value).isEqualTo(expected)
158+
verify(exactly = 1) { mockUsbUseCase.requestPermission(fakeDevice) }
159+
}
160+
137161
@Test
138162
fun `connect emits expected message and calls requestPermission when the device is a clone`() =
139163
runTest {
@@ -196,7 +220,7 @@ internal class MainActivityViewModelTest {
196220
runTest {
197221
// arrange
198222
val mockDevice: UsbDevice = mockk(relaxed = true)
199-
val fakeVendorId = 0x0043
223+
val fakeVendorId = OFFICIAL_VENDOR_ID
200224
every { mockDevice.vendorId } returns fakeVendorId
201225
every { mockUsbUseCase.usbDevice } returns MutableStateFlow(mockDevice)
202226
every { mockUsbUseCase.hasPermission(mockDevice) } returns true

0 commit comments

Comments
 (0)