Skip to content

Commit 7538082

Browse files
committed
tests: make sure startObservingUsbDevice works as expected
1 parent 0ed880c commit 7538082

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,27 @@ internal class MainActivityViewModelTest {
5555
clearAllMocks()
5656
}
5757

58+
@Test
59+
fun `startObservingUsbDevice updates infoMessage and calls openDeviceAndPort when device is emitted`() =
60+
runTest {
61+
// arrange
62+
val expected = 0x0043
63+
val deviceFlow = MutableStateFlow<UsbDevice?>(null)
64+
val mockDevice: UsbDevice = mockk(relaxed = true)
65+
every { mockDevice.vendorId } returns expected
66+
every { mockUsbUseCase.usbDevice } returns deviceFlow
67+
every { mockArduinoUsecase.openDeviceAndPort(mockDevice) } returns Unit
68+
69+
// act
70+
sut.startObservingUsbDevice()
71+
deviceFlow.value = mockDevice
72+
advanceUntilIdle()
73+
74+
// assert
75+
verify(exactly = 1) { mockArduinoUsecase.openDeviceAndPort(mockDevice) }
76+
assertThat(sut.infoMessage.value).contains(expected.toString())
77+
}
78+
5879
@Test
5980
fun `connect emits expected message when device list is empty`() =
6081
runTest {

0 commit comments

Comments
 (0)