diff --git a/android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt b/android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt index 0e381bbc..87403433 100644 --- a/android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt +++ b/android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt @@ -206,11 +206,11 @@ protected constructor( public open fun dispatchDetach() { checkForMainThread() - interactorGeneric.dispatchDetach() willDetach() for (child in children) { detachChild(child) } + interactorGeneric.dispatchDetach() } /** diff --git a/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/InteractorAndRouterTest.kt b/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/InteractorAndRouterTest.kt index a23c365d..6099f4b7 100644 --- a/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/InteractorAndRouterTest.kt +++ b/android/libraries/rib-base/src/test/kotlin/com/uber/rib/core/InteractorAndRouterTest.kt @@ -97,16 +97,23 @@ class InteractorAndRouterTest { router.dispatchDetach() // Then. - val ribActionInfoValues = ribActionInfoObserver.values() - ribActionInfoValues - .last() - .assertRibActionInfo( - RibEventType.DETACHED, - RibActionEmitterType.ROUTER, - RibActionState.COMPLETED, - "com.uber.rib.core.FakeRouter", - ) verify(childInteractor).dispatchDetach() + val ribActionInfoValues = ribActionInfoObserver.values() + val childRouterDetachIndex = + ribActionInfoValues.indexOfFirst { + it.ribEventType == RibEventType.DETACHED && + it.ribActionEmitterType == RibActionEmitterType.ROUTER && + it.ribActionState == RibActionState.COMPLETED + } + val selfInteractorDetachIndex = + ribActionInfoValues.indexOfFirst { + it.ribEventType == RibEventType.DETACHED && + it.ribActionEmitterType == RibActionEmitterType.INTERACTOR && + it.ribActionState == RibActionState.COMPLETED + } + assertThat(selfInteractorDetachIndex).isGreaterThan(-1) + assertThat(childRouterDetachIndex).isGreaterThan(-1) + assertThat(selfInteractorDetachIndex > childRouterDetachIndex).isTrue() } @Test