@@ -12,8 +12,8 @@ import kotlinx.coroutines.Dispatchers
1212import kotlinx.coroutines.ExperimentalCoroutinesApi
1313import kotlinx.coroutines.test.StandardTestDispatcher
1414import kotlinx.coroutines.test.TestDispatcher
15- import kotlinx.coroutines.test.TestScope
1615import kotlinx.coroutines.test.resetMain
16+ import kotlinx.coroutines.test.runTest
1717import kotlinx.coroutines.test.setMain
1818import org.junit.After
1919import org.junit.Before
@@ -28,7 +28,6 @@ import org.kabiri.android.usbterminal.util.isOfficialArduinoBoard
2828@OptIn(ExperimentalCoroutinesApi ::class )
2929internal class MainActivityViewModelTest {
3030 private val testDispatcher: TestDispatcher = StandardTestDispatcher ()
31- private val testScope = TestScope (testDispatcher)
3231
3332 val mockArduinoUsecase: IArduinoUseCase = mockk(relaxed = true )
3433 val mockUsbUseCase: IUsbUseCase = mockk(relaxed = true )
@@ -55,81 +54,85 @@ internal class MainActivityViewModelTest {
5554 }
5655
5756 @Test
58- fun `connect emits expected message when device list is empty` () {
59- // arrange
60- val expected = " this is an error"
61- every { mockUsbUseCase.scanForUsbDevices() } returns emptyList()
62- every { mockResourceProvider.getString(R .string.helper_error_usb_devices_not_attached) } returns expected
57+ fun `connect emits expected message when device list is empty` () =
58+ runTest {
59+ // arrange
60+ val expected = " this is an error"
61+ every { mockUsbUseCase.scanForUsbDevices() } returns emptyList()
62+ every { mockResourceProvider.getString(R .string.helper_error_usb_devices_not_attached) } returns expected
6363
64- // act
65- sut.connect()
64+ // act
65+ sut.connect()
6666
67- // assert
68- assertThat(sut.errorMessage.value).isEqualTo(expected)
69- }
67+ // assert
68+ assertThat(sut.errorMessage.value).isEqualTo(expected)
69+ }
7070
7171 @Test
72- fun `connect emits expected message and calls requestPermission anyways when the device is unknown` () {
73- // arrange
74- val expectedError = " device not found"
75- val expectedInfo = " connecting anyways"
76-
77- val fakeDevice: UsbDevice = mockk(relaxed = true )
78- mockkStatic(UsbDevice ::isOfficialArduinoBoard, UsbDevice ::isCloneArduinoBoard)
79- every { fakeDevice.isOfficialArduinoBoard() } returns false
80- every { fakeDevice.isCloneArduinoBoard() } returns false
81-
82- every { mockUsbUseCase.scanForUsbDevices() } returns listOf (fakeDevice)
83- every { mockResourceProvider.getString(R .string.helper_error_arduino_device_not_found) } returns expectedError
84- every { mockResourceProvider.getString(R .string.helper_error_connecting_anyway) } returns expectedInfo
85-
86- // act
87- sut.connect()
88-
89- // assert
90- assertThat(sut.errorMessage.value).isEqualTo(expectedError)
91- assertThat(sut.infoMessage.value).isEqualTo(expectedInfo)
92- verify(exactly = 1 ) { mockUsbUseCase.requestPermission(fakeDevice) }
93- }
72+ fun `connect emits expected message and calls requestPermission anyways when the device is unknown` () =
73+ runTest {
74+ // arrange
75+ val expectedError = " device not found"
76+ val expectedInfo = " connecting anyways"
77+
78+ val fakeDevice: UsbDevice = mockk(relaxed = true )
79+ mockkStatic(UsbDevice ::isOfficialArduinoBoard, UsbDevice ::isCloneArduinoBoard)
80+ every { fakeDevice.isOfficialArduinoBoard() } returns false
81+ every { fakeDevice.isCloneArduinoBoard() } returns false
82+
83+ every { mockUsbUseCase.scanForUsbDevices() } returns listOf (fakeDevice)
84+ every { mockResourceProvider.getString(R .string.helper_error_arduino_device_not_found) } returns expectedError
85+ every { mockResourceProvider.getString(R .string.helper_error_connecting_anyway) } returns expectedInfo
86+
87+ // act
88+ sut.connect()
89+
90+ // assert
91+ assertThat(sut.errorMessage.value).isEqualTo(expectedError)
92+ assertThat(sut.infoMessage.value).isEqualTo(expectedInfo)
93+ verify(exactly = 1 ) { mockUsbUseCase.requestPermission(fakeDevice) }
94+ }
9495
9596 @Test
96- fun `connect emits expected message and calls requestPermission when the device is a clone` () {
97- // arrange
98- val expected = " connecting anyways"
97+ fun `connect emits expected message and calls requestPermission when the device is a clone` () =
98+ runTest {
99+ // arrange
100+ val expected = " connecting anyways"
99101
100- val fakeDevice: UsbDevice = mockk(relaxed = true )
101- mockkStatic(UsbDevice ::isOfficialArduinoBoard, UsbDevice ::isCloneArduinoBoard)
102- every { fakeDevice.isOfficialArduinoBoard() } returns false
103- every { fakeDevice.isCloneArduinoBoard() } returns true
102+ val fakeDevice: UsbDevice = mockk(relaxed = true )
103+ mockkStatic(UsbDevice ::isOfficialArduinoBoard, UsbDevice ::isCloneArduinoBoard)
104+ every { fakeDevice.isOfficialArduinoBoard() } returns false
105+ every { fakeDevice.isCloneArduinoBoard() } returns true
104106
105- every { mockUsbUseCase.scanForUsbDevices() } returns listOf (fakeDevice)
106- every { mockResourceProvider.getString(R .string.helper_error_connecting_anyway) } returns expected
107+ every { mockUsbUseCase.scanForUsbDevices() } returns listOf (fakeDevice)
108+ every { mockResourceProvider.getString(R .string.helper_error_connecting_anyway) } returns expected
107109
108- // act
109- sut.connect()
110+ // act
111+ sut.connect()
110112
111- // assert
112- assertThat(sut.infoMessage.value).isEqualTo(expected)
113- verify(exactly = 1 ) { mockUsbUseCase.requestPermission(fakeDevice) }
114- }
113+ // assert
114+ assertThat(sut.infoMessage.value).isEqualTo(expected)
115+ verify(exactly = 1 ) { mockUsbUseCase.requestPermission(fakeDevice) }
116+ }
115117
116118 @Test
117- fun `connect calls requestPermission when the device is official` () {
118- // arrange
119- val fakeDevice: UsbDevice = mockk(relaxed = true )
120- mockkStatic(UsbDevice ::isOfficialArduinoBoard, UsbDevice ::isCloneArduinoBoard)
121- every { fakeDevice.isOfficialArduinoBoard() } returns true
122- every { fakeDevice.isCloneArduinoBoard() } returns false
123-
124- every { mockUsbUseCase.scanForUsbDevices() } returns listOf (fakeDevice)
125-
126- // act
127- sut.connect()
128-
129- // assert
130- verify(exactly = 1 ) { mockUsbUseCase.requestPermission(fakeDevice) }
131- assertThat(sut.infoMessage.value).isEqualTo(" " )
132- assertThat(sut.errorMessage.value).isEqualTo(" " )
133- assertThat(sut.output.value).isEqualTo(" " )
134- }
119+ fun `connect calls requestPermission when the device is official` () =
120+ runTest {
121+ // arrange
122+ val fakeDevice: UsbDevice = mockk(relaxed = true )
123+ mockkStatic(UsbDevice ::isOfficialArduinoBoard, UsbDevice ::isCloneArduinoBoard)
124+ every { fakeDevice.isOfficialArduinoBoard() } returns true
125+ every { fakeDevice.isCloneArduinoBoard() } returns false
126+
127+ every { mockUsbUseCase.scanForUsbDevices() } returns listOf (fakeDevice)
128+
129+ // act
130+ sut.connect()
131+
132+ // assert
133+ verify(exactly = 1 ) { mockUsbUseCase.requestPermission(fakeDevice) }
134+ assertThat(sut.infoMessage.value).isEqualTo(" " )
135+ assertThat(sut.errorMessage.value).isEqualTo(" " )
136+ assertThat(sut.output.value).isEqualTo(" " )
137+ }
135138}
0 commit comments