Peter Farlow
04/25/2023, 2:57 PMclass MyFlowRepository(private val applicationScope: CoroutineScope) {
private val mutableSharedFlow = MutableSharedFlow<Data>()
val dataFlow = mutableSharedFlow
.shareIn(applicationScope, SharingStarted.Eagerly, replay = 1)
suspend fun addDataSuspending(data: Data) {
mutableSharedFlow.emit(data)
}
fun addData(data: Data) {
applicationScope.launch {
mutableSharedFlow.emit(data)
}
}
}
Peter Farlow
04/25/2023, 2:57 PMclass MyFlowRepositoryTest {
private val testScope = TestScope()
@Test
fun test() = testScope.runTest(dispatchTimeoutMs = 2_000) {
val repository = MyFlowRepository(testScope.backgroundScope)
repository.dataFlow.test {
repository.addDataSuspending(Data("11"))
assertEquals(expected = Data("11"), awaitItem())
repository.addData(Data("10"))
assertEquals(expected = Data("10"), awaitItem())
}
}
}
Peter Farlow
04/25/2023, 2:58 PM@Test
fun test() = testScope.runTest(dispatchTimeoutMs = 2_000) {
val repository = MyFlowRepository(testScope.backgroundScope)
repository.dataFlow.test {
repository.addData(Data("10"))
assertEquals(expected = Data("10"), awaitItem())
repository.addDataSuspending(Data("11"))
assertEquals(expected = Data("11"), awaitItem())
}
}
Peter Farlow
04/25/2023, 2:58 PM