@Test
  public void dismissingCustomEventInterstitial_shouldNotBecomeReadyToShowCustomEventAd()
      throws Exception {
    subject.onCustomEventInterstitialLoaded();
    subject.onCustomEventInterstitialDismissed();

    assertShowsCustomEventInterstitial(false);
  }
  @Test
  public void failingCustomEventInterstitial_shouldNotBecomeReadyToShowCustomEventAd()
      throws Exception {
    subject.onCustomEventInterstitialLoaded();
    subject.onCustomEventInterstitialFailed(CANCELLED);

    assertShowsCustomEventInterstitial(false);
  }
  @Test
  public void loadingCustomEventInterstitial_shouldBecomeReadyToShowCustomEventAd()
      throws Exception {
    subject.load();
    subject.onCustomEventInterstitialLoaded();

    assertShowsCustomEventInterstitial(true);
  }
  @Test
  public void destroy_shouldPreventOnCustomEventInterstitialLoadedNotification() throws Exception {
    subject.destroy();

    subject.onCustomEventInterstitialLoaded();

    verify(interstitialAdListener, never()).onInterstitialLoaded(eq(subject));
  }
  @Test
  public void onCustomEventInterstitialLoaded_shouldNotifyListener() throws Exception {
    subject.setInterstitialView(interstitialView);

    subject.onCustomEventInterstitialLoaded();
    verify(interstitialAdListener).onInterstitialLoaded(eq(subject));

    verify(interstitialView, never()).trackImpression();
  }
  @Test
  public void forceRefresh_shouldResetInterstitialViewAndMarkNotDestroyed() throws Exception {
    subject.setInterstitialView(interstitialView);
    subject.onCustomEventInterstitialLoaded();
    subject.forceRefresh();

    assertThat(subject.isReady()).isFalse();
    assertThat(subject.isDestroyed()).isFalse();
    verify(interstitialView).forceRefresh();
  }