Merge pull request #5698 from element-hq/feature/bma/handleEvent
Code consistency around view event handling
This commit is contained in:
@@ -12,6 +12,7 @@ import app.cash.molecule.moleculeFlow
|
||||
import app.cash.turbine.TurbineTestContext
|
||||
import app.cash.turbine.test
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import org.junit.Assert.fail
|
||||
import kotlin.time.Duration
|
||||
|
||||
suspend fun <State> Presenter<State>.test(
|
||||
@@ -19,7 +20,20 @@ suspend fun <State> Presenter<State>.test(
|
||||
name: String? = null,
|
||||
validate: suspend TurbineTestContext<State>.() -> Unit,
|
||||
) {
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
present()
|
||||
}.test(timeout, name, validate)
|
||||
try {
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
present()
|
||||
}.test(timeout, name, validate)
|
||||
} catch (t: Throwable) {
|
||||
if (t::class.simpleName == "KotlinReflectionInternalError") {
|
||||
// Give a more explicit error to the developer
|
||||
fail("""
|
||||
It looks like you have an unconsumed event in your test.
|
||||
If you get this error, it means that your test is missing to consume one of several events.
|
||||
You can fix by consuming and check the event with `awaitItem()`, or you can also invoke
|
||||
`cancelAndIgnoreRemainingEvents()`.
|
||||
""".trimIndent())
|
||||
}
|
||||
throw t
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user