From c6e088d170f51edc08d034049d659c99a8bc4e10 Mon Sep 17 00:00:00 2001 From: Patrick Steiger Date: Wed, 29 Nov 2023 23:21:37 -0300 Subject: [PATCH] Add test asserting Rx subscription is disposed after `RibCoroutineWorker.asWorker()` is unbound. --- .../uber/rib/core/RibCoroutineWorkerTest.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/RibCoroutineWorkerTest.kt b/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/RibCoroutineWorkerTest.kt index d63ca5b7..e721c258 100644 --- a/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/RibCoroutineWorkerTest.kt +++ b/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/RibCoroutineWorkerTest.kt @@ -200,6 +200,26 @@ class RibCoroutineWorkerTest { assertThat(gotEmission).isTrue() } + @Test + fun asWorker_autoDisposeWithCoroutineScope_unbindingWorkerDisposesSubscription() = runTest { + val router = mock>() + val interactor = object : Interactor>() {} + val subject = PublishSubject.create() + var disposed = false + val ribCoroutineWorker = RibCoroutineWorker { + subject.doOnDispose { disposed = true }.autoDispose(this).subscribe() + } + val worker = ribCoroutineWorker.asWorker() + InteractorHelper.attach(interactor, Any(), router, null) + val unbinder = WorkerBinder.bind(interactor, worker) + runCurrent() + subject.onNext(Unit) + assertThat(disposed).isFalse() + unbinder.unbind() + runCurrent() + assertThat(disposed).isTrue() + } + @Test fun testHelperFunction() = runTest { // Sanity - assert initial state.