### Question:
TimelineFragment extends ControllerPresenterFragment<TimelineView> implements TimelineAdapter.OnItemClickListener,
        BaseFragmentPagerAdapter.Controller { public void timelineUnavailable(final Throwable e) { Analytics.trackError(e, "Loading Timeline"); final CharSequence message = getString(R.string.timeline_error_message); if (this.presenterView.adapterHasEvents()) { final Toast toast = new Toast(getActivity().getApplicationContext()); @SuppressLint("InflateParams") final TextView text = (TextView) getActivity().getLayoutInflater() .inflate(R.layout.toast_text, null); text.setText(message); toast.setView(text); toast.setDuration(Toast.LENGTH_SHORT); toast.show(); } else { this.presenterView.transitionIntoNoDataState(header -> { header.setDiagramResource(R.drawable.timeline_state_error); header.setTitle(R.string.timeline_error_title); header.setMessage(message); }); } }  static TimelineFragment newInstance(@NonNull final LocalDate date,
                                               @Nullable final Timeline cachedTimeline); @Override void setVisibleToUser(final boolean isVisible); @Override void initializePresenterView(); @Override void onCreate(final Bundle savedInstanceState); @Override void onViewCreated(final View view, final Bundle savedInstanceState); @Override void onTrimMemory(final int level); @Override void onPause(); @Override void onDestroyView(); @Override void onDetach(); @Override void onActivityResult(final int requestCode, final int resultCode, final Intent data); @Override void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults); void showTimelineNavigator(@NonNull final LocalDate date,
                                      @Nullable final Timeline timeline); void share(); void showBreakdown(@NonNull final View sender); void dismissVisibleOverlaysAndDialogs(); @SuppressWarnings("ConstantConditions") @NonNull LocalDate getDate(); @Nullable Timeline getCachedTimeline(); void onSwipeBetweenDatesStarted(); void scrollToTop(); void update(); boolean isAtLeastThreeDaysOld(); void bindTimeline(@NonNull final Timeline timeline); void timelineUnavailable(final Throwable e); @Override void onSegmentItemClicked(final int position, final View view, @NonNull final TimelineEvent event); @Override void onEventItemClicked(final int eventPosition, @NonNull final TimelineEvent event); static final int ZOOMED_OUT_TIMELINE_REQUEST; }### Answer:
@Test public void timelineUnavailableTest() { fragment.presenterView = mock(TimelineView.class); when(fragment.presenterView.adapterHasEvents()).thenReturn(true); fragment.timelineUnavailable(mock(Throwable.class)); verify(fragment.presenterView, times(0)).transitionIntoNoDataState(any()); when(fragment.presenterView.adapterHasEvents()).thenReturn(false); fragment.timelineUnavailable(mock(Throwable.class)); verify(fragment.presenterView).transitionIntoNoDataState(any()); }