@Test
public void
    pushRetained_whenNotInitialPush_shouldRunPreviousDetachRunnerAndRunNewAttachRunnerWithCorrectState() {

  routerNavigator.pushRetainedState(TestState.STATE_1, attachTransitionOne, detachTransitionOne);
  verify(attachTransitionOne).willAttachToHost(routerOne, null, TestState.STATE_1, true);
  verify(hostRouter).attachChild(routerOne);
  verifyZeroInteractions(detachTransitionOne);
  routerNavigator.pushRetainedState(TestState.STATE_2, attachTransitionTwo, detachTransitionTwo);
  verify(detachTransitionOne)
      .willDetachFromHost(routerOne, TestState.STATE_1, TestState.STATE_2, true);
  verify(hostRouter).detachChild(routerOne);
  verify(attachTransitionTwo)
      .willAttachToHost(routerTwo, TestState.STATE_1, TestState.STATE_2, true);
  verifyZeroInteractions(detachTransitionTwo);
}