diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java b/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java index f60119e548a..295ad3870f1 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java @@ -84,8 +84,10 @@ public void onSuccess(String childId) { public void dismissAllModals(ViewController root, Options mergeOptions, CommandListener listener) { if (modals.isEmpty()) { + listener.onError("Nothing to dismiss"); return; } + String topModalId = peek().getId(); String topModalName = peek().getCurrentComponentName(); int modalsDismissed = size(); diff --git a/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java b/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java index 543bf930eb7..0b55affb5fd 100644 --- a/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +++ b/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java @@ -1,11 +1,11 @@ package com.reactnativenavigation.viewcontrollers.modal; import android.app.Activity; +import androidx.coordinatorlayout.widget.CoordinatorLayout; import android.view.ViewGroup; import android.widget.FrameLayout; -import com.reactnativenavigation.BaseTest; -import com.reactnativenavigation.TestUtils; +import com.reactnativenavigation.*; import com.reactnativenavigation.anim.ModalAnimator; import com.reactnativenavigation.mocks.SimpleViewController; import com.reactnativenavigation.parse.Options; @@ -14,15 +14,13 @@ import com.reactnativenavigation.utils.CommandListenerAdapter; import com.reactnativenavigation.viewcontrollers.ChildControllersRegistry; import com.reactnativenavigation.viewcontrollers.ViewController; -import com.reactnativenavigation.viewcontrollers.stack.StackController; +import com.reactnativenavigation.viewcontrollers.stack.*; import org.junit.Test; import org.mockito.Mockito; import java.util.EmptyStackException; -import androidx.coordinatorlayout.widget.CoordinatorLayout; - import static org.assertj.core.api.Java6Assertions.assertThat; import static org.assertj.core.api.Java6Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; @@ -173,6 +171,13 @@ public void onSuccess(String childId) { verifyZeroInteractions(listener); } + @Test + public void dismissAllModals_rejectIfEmpty() { + CommandListener spy = spy(new CommandListenerAdapter()); + uut.dismissAllModals(root, Options.EMPTY, spy); + verify(spy, times(1)).onError(any()); + } + @Test public void dismissAllModals_optionsAreMergedOnTopModal() { uut.showModal(modal1, root, new CommandListenerAdapter());