Skip to content

Commit 2263ad6

Browse files
committed
tests: make sure disconnect and serialWrite methods work as expected
1 parent 2e7737a commit 2263ad6

File tree

1 file changed

+41
-13
lines changed

1 file changed

+41
-13
lines changed

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

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,21 +77,22 @@ internal class MainActivityViewModelTest {
7777
}
7878

7979
@Test
80-
fun `startObservingUsbDevice does not call openDeviceAndPort when device is null`() = runTest {
81-
// arrange
82-
val expected = null
83-
val deviceFlow = MutableStateFlow<UsbDevice?>(expected)
84-
every { mockUsbUseCase.usbDevice } returns deviceFlow
80+
fun `startObservingUsbDevice does not call openDeviceAndPort when device is null`() =
81+
runTest {
82+
// arrange
83+
val expected = null
84+
val deviceFlow = MutableStateFlow<UsbDevice?>(expected)
85+
every { mockUsbUseCase.usbDevice } returns deviceFlow
8586

86-
// act
87-
sut.startObservingUsbDevice()
88-
deviceFlow.value = expected
89-
advanceUntilIdle()
87+
// act
88+
sut.startObservingUsbDevice()
89+
deviceFlow.value = expected
90+
advanceUntilIdle()
9091

91-
// assert
92-
verify(exactly = 0) { mockArduinoUsecase.openDeviceAndPort(any()) }
93-
assertThat(sut.infoMessage.value).contains(expected.toString())
94-
}
92+
// assert
93+
verify(exactly = 0) { mockArduinoUsecase.openDeviceAndPort(any()) }
94+
assertThat(sut.infoMessage.value).contains(expected.toString())
95+
}
9596

9697
@Test
9798
fun `connect emits expected message when device list is empty`() =
@@ -209,4 +210,31 @@ internal class MainActivityViewModelTest {
209210
verify { mockUsbUseCase.hasPermission(mockDevice) }
210211
verify { mockArduinoUsecase.openDeviceAndPort(mockDevice) }
211212
}
213+
214+
@Test
215+
fun `disconnect calls disconnect on both usbUseCase and arduinoUseCase`() =
216+
runTest {
217+
// arrange
218+
// act
219+
sut.disconnect()
220+
221+
// assert
222+
verify(exactly = 1) { mockUsbUseCase.disconnect() }
223+
verify(exactly = 1) { mockArduinoUsecase.disconnect() }
224+
}
225+
226+
@Test
227+
fun `serialWrite updates output and returns result from arduinoUseCase`() = runTest {
228+
// arrange
229+
val expected = "TEST_COMMAND"
230+
every { mockArduinoUsecase.serialWrite(expected) } returns true
231+
232+
// act
233+
val result = sut.serialWrite(expected)
234+
235+
// assert
236+
verify { mockArduinoUsecase.serialWrite(expected) }
237+
assertThat(result).isTrue()
238+
assertThat(sut.output.value).contains(expected)
239+
}
212240
}

0 commit comments

Comments
 (0)