From 516115cc1c26fc61f5777196a52bc3a7933bb9c9 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 20 Apr 2026 09:21:01 -0400 Subject: [PATCH] Fixes test cases for the CallManagerTest --- .../marmotGroup/send/MarmotFileUploader.kt | 2 +- .../amethyst/commons/call/CallManagerTest.kt | 36 +++++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/send/MarmotFileUploader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/send/MarmotFileUploader.kt index e6e058d70..6157b72e1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/send/MarmotFileUploader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/marmotGroup/send/MarmotFileUploader.kt @@ -91,7 +91,7 @@ class MarmotFileUploader( val state = item.orchestrator.progressState.value if (state is UploadingState.Finished && state.result is UploadOrchestrator.OrchestratorResult.ServerResult) { - val serverResult = state.result as UploadOrchestrator.OrchestratorResult.ServerResult + val serverResult = state.result results.add( Mip04UploadResult( url = serverResult.url, diff --git a/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/call/CallManagerTest.kt b/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/call/CallManagerTest.kt index 37afc7503..dfa40002e 100644 --- a/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/call/CallManagerTest.kt +++ b/commons/src/commonTest/kotlin/com/vitorpamplona/amethyst/commons/call/CallManagerTest.kt @@ -112,6 +112,12 @@ class CallManagerTest { return events to job } + private fun TestScope.collectRenegotiationEvents(manager: CallManager): Pair, Job> { + val events = mutableListOf() + val job = launch { manager.renegotiationEvents.collect { events.add(it) } } + return events to job + } + // ---- Event construction helpers ---- // These use the real event builders from quartz so that tag structures // stay in sync with the production code. The builder returns an @@ -569,13 +575,13 @@ class CallManagerTest { manager.onPeerConnected() assertIs(manager.state.value) - var receivedRenego: CallRenegotiateEvent? = null - manager.onRenegotiationOfferReceived = { receivedRenego = it } + val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager) val renego = makeRenegotiate(from = alice, to = bob) manager.onSignalingEvent(renego) - assertNotNull(receivedRenego, "Renegotiation should be forwarded in Connected state") + assertNotNull(renegoEvents.firstOrNull(), "Renegotiation should be forwarded in Connected state") + renegoJob.cancel() } @Test @@ -587,13 +593,13 @@ class CallManagerTest { manager.acceptCall(sdpAnswer) assertIs(manager.state.value) - var receivedRenego: CallRenegotiateEvent? = null - manager.onRenegotiationOfferReceived = { receivedRenego = it } + val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager) val renego = makeRenegotiate(from = alice, to = bob) manager.onSignalingEvent(renego) - assertNotNull(receivedRenego) + assertNotNull(renegoEvents.firstOrNull()) + renegoJob.cancel() } @Test @@ -601,14 +607,14 @@ class CallManagerTest { runTest { val (manager, _) = createManager(localPubKey = bob) - var receivedRenego: CallRenegotiateEvent? = null - manager.onRenegotiationOfferReceived = { receivedRenego = it } + val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager) val renego = makeRenegotiate(from = alice, to = bob) manager.onSignalingEvent(renego) assertIs(manager.state.value) - assertEquals(null, receivedRenego, "Renegotiation in Idle state should be ignored") + assertEquals(0, renegoEvents.size, "Renegotiation in Idle state should be ignored") + renegoJob.cancel() } @Test @@ -620,13 +626,13 @@ class CallManagerTest { manager.acceptCall(sdpAnswer) manager.onPeerConnected() - var receivedRenego: CallRenegotiateEvent? = null - manager.onRenegotiationOfferReceived = { receivedRenego = it } + val (renegoEvents, renegoJob) = collectRenegotiationEvents(manager) val renego = makeRenegotiate(from = alice, to = bob, callId = "wrong-call-id") manager.onSignalingEvent(renego) - assertEquals(null, receivedRenego, "Renegotiation for wrong call-id should be ignored") + assertEquals(0, renegoEvents.size, "Renegotiation for wrong call-id should be ignored") + renegoJob.cancel() } // ======================================================================== @@ -1765,10 +1771,10 @@ class CallManagerTest { assertEquals(1, alicePublished.size) // Step 7: Bob receives renegotiate and responds - var renegoReceived = false - bobManager.onRenegotiationOfferReceived = { renegoReceived = true } + val (bobRenegoEvents, bobRenegoJob) = collectRenegotiationEvents(bobManager) bobManager.onSignalingEvent(makeRenegotiate(from = alice, to = bob)) - assertTrue(renegoReceived) + assertTrue(bobRenegoEvents.isNotEmpty()) + bobRenegoJob.cancel() bobPublished.clear() bobManager.sendRenegotiationAnswer("renego-answer-sdp", alice)