@Before public void setUp() { sdkVersion = Build.VERSION.SDK_INT; MockitoAnnotations.initMocks(this); view = new View(RuntimeEnvironment.application); target = new TestViewTarget(view); attachStateTarget = new AttachStateTarget(view); shadowView = Shadow.extract(view); shadowObserver = Shadow.extract(view.getViewTreeObserver()); }
@Test public void clearOnDetach_onDetach_afterLoadCleared_clearsRequest() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(request); when(request.isCleared()).thenReturn(true); shadowView.callOnDetachedFromWindow(); verify(request).clear(); }
@Test public void clearOnDetach_onDetach_afterOnLoadCleared_removesListener() { attachStateTarget.clearOnDetach(); attachStateTarget.onLoadCleared(/*placeholder=*/ null); attachStateTarget.setRequest(request); shadowView.callOnDetachedFromWindow(); verify(request, never()).clear(); }
@SuppressWarnings("ResultOfMethodCallIgnored") @Test public void onLoadCleared_withoutClearOnDetach_doesNotRemoveListeners() { OnAttachStateChangeListener expected = new OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { } @Override public void onViewDetachedFromWindow(View v) { } }; shadowView.addOnAttachStateChangeListener(expected); attachStateTarget.onLoadCleared(/*placeholder=*/ null); assertThat(shadowView.attachStateListeners).containsExactly(expected); }
@Test public void clearOnDetach_moreThanOnce_registersObserverOnce() { attachStateTarget .clearOnDetach() .clearOnDetach(); assertThat(shadowView.attachStateListeners).hasSize(1); }
@Test public void onLoadStarted_withoutClearOnDetach_doesNotAddListener() { attachStateTarget.onLoadStarted(/*placeholder=*/ null); assertThat(shadowView.attachStateListeners).isEmpty(); }
@Test public void clearOnDetach_onDetach_withClearedRequest_clearsRequest() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(request); when(request.isCleared()).thenReturn(true); shadowView.callOnDetachedFromWindow(); verify(request).clear(); }
@Test public void clearOnDetach_onAttach_withRunningRequest_doesNotBeginRequest() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(request); when(request.isCleared()).thenReturn(false); shadowView.callOnAttachedToWindow(); verify(request, never()).begin(); }
@Test public void clearOnDetach_onDetach_afterMultipleClearOnDetaches_removesListener() { attachStateTarget .clearOnDetach() .clearOnDetach() .clearOnDetach(); attachStateTarget.onLoadCleared(/*placeholder=*/ null); attachStateTarget.setRequest(request); shadowView.callOnDetachedFromWindow(); verify(request, never()).clear(); }
@Test public void clearOnDetach_afterLoadClearedAndRestarted_onAttach_beingsRequest() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(request); when(request.isCleared()).thenReturn(true); attachStateTarget.onLoadCleared(/*placeholder=*/ null); attachStateTarget.onLoadStarted(/*placeholder=*/ null); shadowView.callOnAttachedToWindow(); verify(request).begin(); }
@Test public void clearOnDetach_onDetach_withRunningRequest_pausesRequestOnce() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(request); shadowView.callOnDetachedFromWindow(); verify(request).clear(); }
@Test public void clearOnDetach_onAttach_afterLoadCleared_doesNotBeingRequest() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(request); when(request.isCleared()).thenReturn(true); attachStateTarget.onLoadCleared(/*placeholder=*/ null); shadowView.callOnAttachedToWindow(); verify(request, never()).begin(); }
@Test public void clearOnDetach_onAttach_withNullRequest_doesNothing() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(null); shadowView.callOnAttachedToWindow(); }
@Test public void clearOnDetach_onDetach_withNullRequest_doesNothing() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(null); shadowView.callOnAttachedToWindow(); }
@Test public void clearOnDetach_onAttach_withClearedRequest_beginsRequest() { attachStateTarget.clearOnDetach(); attachStateTarget.setRequest(request); when(request.isCleared()).thenReturn(true); shadowView.callOnAttachedToWindow(); verify(request).begin(); }