test: stabilize reply event ID test for voice message composer
This commit is contained in:
parent
a9ed37920a
commit
77b562294e
1 changed files with 9 additions and 10 deletions
|
|
@ -414,23 +414,22 @@ class DefaultVoiceMessageComposerPresenterTest {
|
||||||
fun `present - send voice message passes reply event ID only when in reply mode`() = runTest {
|
fun `present - send voice message passes reply event ID only when in reply mode`() = runTest {
|
||||||
val presenter = createDefaultVoiceMessageComposerPresenter()
|
val presenter = createDefaultVoiceMessageComposerPresenter()
|
||||||
presenter.test {
|
presenter.test {
|
||||||
// Send without reply - should pass null
|
// First send in Normal mode (default composerMode).
|
||||||
messageComposerContext.composerMode = MessageComposerMode.Normal
|
|
||||||
awaitItem().eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Start))
|
awaitItem().eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Start))
|
||||||
awaitItem().eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Stop))
|
awaitItem().eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Stop))
|
||||||
awaitItem().eventSink(VoiceMessageComposerEvent.SendVoiceMessage)
|
awaitItem().eventSink(VoiceMessageComposerEvent.SendVoiceMessage)
|
||||||
skipItems(1) // Sending state
|
assertThat(awaitItem().voiceMessageState).isEqualTo(aPreviewState().toSendingState())
|
||||||
advanceUntilIdle()
|
val idleAfterFirstSend = awaitItem()
|
||||||
|
assertThat(idleAfterFirstSend.voiceMessageState).isEqualTo(VoiceMessageState.Idle)
|
||||||
|
|
||||||
sendVoiceMessageResult.assertions().isCalledOnce()
|
// Switching to reply mode does not trigger recomposition, so reuse the prior eventSink.
|
||||||
.with(any(), any(), any(), value(null))
|
|
||||||
|
|
||||||
// Send as reply - should pass event ID
|
|
||||||
messageComposerContext.composerMode = aReplyMode()
|
messageComposerContext.composerMode = aReplyMode()
|
||||||
awaitItem().eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Start))
|
idleAfterFirstSend.eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Start))
|
||||||
awaitItem().eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Stop))
|
awaitItem().eventSink(VoiceMessageComposerEvent.RecorderEvent(VoiceMessageRecorderEvent.Stop))
|
||||||
awaitItem().eventSink(VoiceMessageComposerEvent.SendVoiceMessage)
|
awaitItem().eventSink(VoiceMessageComposerEvent.SendVoiceMessage)
|
||||||
val finalState = awaitItem() // Sending state
|
assertThat(awaitItem().voiceMessageState).isEqualTo(aPreviewState().toSendingState())
|
||||||
|
val finalState = awaitItem()
|
||||||
|
assertThat(finalState.voiceMessageState).isEqualTo(VoiceMessageState.Idle)
|
||||||
|
|
||||||
sendVoiceMessageResult.assertions().isCalledExactly(2)
|
sendVoiceMessageResult.assertions().isCalledExactly(2)
|
||||||
.withSequence(
|
.withSequence(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue