/** * {@link android.app.Activity#onDestroy()}, * {@link android.app.Fragment#onDestroy()}, * {@link android.view.View#onDetachedFromWindow()} */ public void onDestroy(boolean isFinal) { if (presenter != null && isFinal) { presenter.destroy(); presenter = null; } } }
@Test public void testOnDestroy() throws Exception { Presenter.OnDestroyListener listener = mock(Presenter.OnDestroyListener.class); Presenter presenter = new Presenter(); presenter.create(null); presenter.addOnDestroyListener(listener); presenter.destroy(); verify(listener, times(1)).onDestroy(); verifyNoMoreInteractions(listener); }
@Test public void testOnNoDestroy() throws Exception { Presenter.OnDestroyListener listener = mock(Presenter.OnDestroyListener.class); Presenter presenter = new Presenter(); presenter.create(null); presenter.addOnDestroyListener(listener); presenter.removeOnDestroyListener(listener); presenter.destroy(); verifyNoMoreInteractions(listener); } }
Presenter mockPresenter() { Presenter presenter = mock(Presenter.class); final ArrayList<Presenter.OnDestroyListener> onDestroyListeners = new ArrayList<>(); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { onDestroyListeners.add((Presenter.OnDestroyListener) invocation.getArguments()[0]); return null; } }).when(presenter).addOnDestroyListener(any(Presenter.OnDestroyListener.class)); doAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { for (Presenter.OnDestroyListener listener : onDestroyListeners) listener.onDestroy(); return null; } }).when(presenter).destroy(); return presenter; }
@Test public void testSavePresenter() throws Exception { Presenter presenter = new Presenter(); PresenterStorage.INSTANCE.add(presenter); Presenter presenter2 = new Presenter(); PresenterStorage.INSTANCE.add(presenter2); String id = PresenterStorage.INSTANCE.getId(presenter); assertNotEquals(id, PresenterStorage.INSTANCE.getId(presenter2)); assertEquals(presenter, PresenterStorage.INSTANCE.getPresenter(id)); presenter.destroy(); assertNull(PresenterStorage.INSTANCE.getPresenter(id)); }