Skip to content

Commit fbc2040

Browse files
committed
Address failing test
1 parent 7859334 commit fbc2040

1 file changed

Lines changed: 26 additions & 17 deletions

File tree

WordPress/src/test/java/org/wordpress/android/ui/voicetocontent/VoiceToContentViewModelTest.kt

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
package org.wordpress.android.ui.voicetocontent
22

3+
import kotlinx.coroutines.CoroutineScope
34
import kotlinx.coroutines.ExperimentalCoroutinesApi
5+
import kotlinx.coroutines.flow.flow
6+
import kotlinx.coroutines.flow.toList
7+
import kotlinx.coroutines.launch
48
import org.junit.Before
5-
import org.junit.runner.RunWith
69
import org.mockito.Mock
7-
import org.mockito.junit.MockitoJUnitRunner
810
import org.mockito.kotlin.verifyNoInteractions
911
import org.mockito.kotlin.whenever
1012
import org.wordpress.android.BaseUnitTest
1113
import org.wordpress.android.ui.mysite.SelectedSiteRepository
14+
import org.wordpress.android.util.audio.RecordingUpdate
1215
import org.wordpress.android.viewmodel.ContextProvider
1316
import kotlin.test.Test
1417

1518
@ExperimentalCoroutinesApi
16-
@RunWith(MockitoJUnitRunner::class)
1719
class VoiceToContentViewModelTest : BaseUnitTest() {
1820
@Mock
1921
lateinit var voiceToContentFeatureUtils: VoiceToContentFeatureUtils
@@ -35,8 +37,22 @@ class VoiceToContentViewModelTest : BaseUnitTest() {
3537

3638
private lateinit var viewModel: VoiceToContentViewModel
3739

38-
// private lateinit var uiState: MutableList<VoiceToContentResult>
40+
private var uiStateChanges = mutableListOf<VoiceToContentUiState>()
41+
private val uiState
42+
get() = viewModel.state.value
3943

44+
private fun <T> testUiStateChanges(
45+
block: suspend CoroutineScope.() -> T
46+
) {
47+
test {
48+
uiStateChanges.clear()
49+
val job = launch(testDispatcher()) {
50+
viewModel.state.toList(uiStateChanges)
51+
}
52+
this.block()
53+
job.cancel()
54+
}
55+
}
4056
/* private val jetpackAIAssistantFeature = JetpackAIAssistantFeature(
4157
hasFeature = true,
4258
isOverLimit = false,
@@ -55,7 +71,7 @@ class VoiceToContentViewModelTest : BaseUnitTest() {
5571
@Before
5672
fun setup() {
5773
// Mock the recording updates to return a non-null flow before ViewModel instantiation
58-
// whenever(recordingUseCase.recordingUpdates()).thenReturn(createRecordingUpdateFlow())
74+
whenever(recordingUseCase.recordingUpdates()).thenReturn(createRecordingUpdateFlow())
5975

6076
viewModel = VoiceToContentViewModel(
6177
testDispatcher(),
@@ -66,20 +82,13 @@ class VoiceToContentViewModelTest : BaseUnitTest() {
6682
contextProvider,
6783
prepareVoiceToContentUseCase
6884
)
69-
// uiState = mutableListOf()
70-
// viewModel.uiState.observeForever { event ->
71-
// event?.let { result ->
72-
// uiState.add(result)
73-
// }
74-
// }
7585
}
7686

77-
//
78-
// // Helper function to create a consistent flow
79-
// private fun createRecordingUpdateFlow() = flow {
80-
// emit(RecordingUpdate(0, 0, false))
81-
// }
82-
//
87+
// Helper function to create a consistent flow
88+
private fun createRecordingUpdateFlow() = flow {
89+
emit(RecordingUpdate(0, 0, false))
90+
}
91+
8392
@Test
8493
fun `when site is null, then execute posts error state `() = test {
8594
whenever(selectedSiteRepository.getSelectedSite()).thenReturn(null)

0 commit comments

Comments
 (0)