public boolean wasUpdated() { runUiThreadTasksIncludingDelayedTasks(); return updated; }
public void addToObservable(@NonNull final Observable observable) { observable.addUpdatable(this); observables.add(observable); runUiThreadTasksIncludingDelayedTasks(); }
@Test public void shouldNotifyChangeOnAdditionalObservablesUpdateWhenObservingAndObserved() { repositoryAdapter.startObserving(); repositoryAdapter.registerAdapterDataObserver(observer); runUiThreadTasksIncludingDelayedTasks(); verify(observer, never()).onChanged(); repositoryAdapter.getItemCount(); // usage before event updateDispatcher.update(); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); verify(observer).onChanged(); }
@Test public void shouldCallRecycleForOnFailedToRecycleViewForSecondPresenter() { when(repositoryPresenter.getItemCount(ALTERNATIVE_REPOSITORY_ITEM)).thenReturn(1); repositoryAdapter.getItemCount(); //Trigger a refresh repositoryAdapter.startObserving(); repository.accept(ALTERNATIVE_REPOSITORY_ITEM); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); repositoryAdapter.onBindViewHolder(viewHolder, 1); repositoryAdapter.onFailedToRecycleView(viewHolder); verify(secondRepositoryPresenter).recycle(viewHolder); }
@Test public void shouldCallRecycleForOnFailedToRecycleView() { when(repositoryPresenter.getItemCount(ALTERNATIVE_REPOSITORY_ITEM)).thenReturn(1); repositoryAdapter.getItemCount(); //Trigger a refresh repositoryAdapter.startObserving(); repository.accept(ALTERNATIVE_REPOSITORY_ITEM); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); repositoryAdapter.onBindViewHolder(viewHolder, 0); repositoryAdapter.onFailedToRecycleView(viewHolder); verify(repositoryPresenter).recycle(viewHolder); }
@Test public void shouldNotifyChangeOnStartObservingAfterUsage() { repositoryAdapter.registerAdapterDataObserver(observer); repositoryAdapter.getItemCount(); // "usage". // Because the adapter is not observing any data change, after the usage, it doesn't know of any // change of data, so for extra guarantee, it'll notify change as soon as it starts observing. repositoryAdapter.startObserving(); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); verify(observer).onChanged(); }
@Test public void shouldBindItemPresenter() { repositoryAdapter.getItemCount(); //Trigger a refresh repositoryAdapter.startObserving(); updateDispatcher.update(); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); final ViewHolder viewHolder = new ViewHolder(view) {}; repositoryAdapter.onBindViewHolder(viewHolder, 7); verify(multiItemRepositoryPresenter).bind(ITEM, 1, viewHolder); }
@Test public void shouldCallRecycleForOnViewRecycledForItemPresenter() { repositoryAdapter.getItemCount(); //Trigger a refresh repositoryAdapter.startObserving(); updateDispatcher.update(); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); final ViewHolder viewHolder = new ViewHolder(view) {}; repositoryAdapter.onBindViewHolder(viewHolder, 5); repositoryAdapter.onViewRecycled(viewHolder); verify(singleItemRepositoryPresenter).recycle(viewHolder); }
@Test public void shouldCallRecycleForOnViewRecycledForLayoutPresenter() { repositoryAdapter.getItemCount(); //Trigger a refresh repositoryAdapter.startObserving(); updateDispatcher.update(); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); final ViewHolder viewHolder = new ViewHolder(view) {}; repositoryAdapter.onBindViewHolder(viewHolder, 4); repositoryAdapter.onViewRecycled(viewHolder); verify(layoutPresenter).recycle(view); }
@Test public void shouldCallRecycleForOnFailedToRecycleViewForLayoutPresenter() { repositoryAdapter.getItemCount(); //Trigger a refresh repositoryAdapter.startObserving(); updateDispatcher.update(); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); final ViewHolder viewHolder = new ViewHolder(view) {}; repositoryAdapter.onBindViewHolder(viewHolder, 4); repositoryAdapter.onFailedToRecycleView(viewHolder); verify(layoutPresenter).recycle(view); }
@Test public void shouldCallRecycleForOnFailedToRecycleViewForItemPresenter() { repositoryAdapter.getItemCount(); //Trigger a refresh repositoryAdapter.startObserving(); updateDispatcher.update(); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapter.stopObserving(); final ViewHolder viewHolder = new ViewHolder(view) {}; repositoryAdapter.onBindViewHolder(viewHolder, 5); repositoryAdapter.onFailedToRecycleView(viewHolder); verify(singleItemRepositoryPresenter).recycle(viewHolder); }
@Test public void shouldDoNothingOnActivityStoppedForWhileResumed() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileResumed(activity); runUiThreadTasksIncludingDelayedTasks(); setActivityToStopped(); }
@Test public void shouldDoNothingOnActivityDestroyedForWhileStarted() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileStarted(activity); runUiThreadTasksIncludingDelayedTasks(); setActivityToDestroyed(); }
@Test public void shouldDoNothingOnSaveInstanceStateForWhileStarted() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileStarted(activity); runUiThreadTasksIncludingDelayedTasks(); saveActivityInstanceState(); }
@Test public void shouldDoNothingOnActivityCreatedForWhileResumed() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileResumed(activity); runUiThreadTasksIncludingDelayedTasks(); setActivityToCreated(); }
@Test public void shouldDoNothingOnActivityDestroyedForWhileResumed() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileResumed(activity); runUiThreadTasksIncludingDelayedTasks(); setActivityToDestroyed(); }
@Test public void shouldDoNothingOnActivityCreatedForWhileStarted() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileStarted(activity); runUiThreadTasksIncludingDelayedTasks(); setActivityToCreated(); }
@Test public void shouldDoNothingOnActivityResumedForWhileStarted() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileStarted(activity); runUiThreadTasksIncludingDelayedTasks(); setActivityToResumed(); }
@Test public void shouldPostInvalidateDelayed() throws Exception { ShadowLooper.pauseMainLooper(); view.postInvalidateDelayed(100); ShadowView shadowView = shadowOf(view); assertFalse(shadowView.wasInvalidated()); ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); assertTrue(shadowView.wasInvalidated()); }
@Test public void workerUnsubscriptionDoesNotAffectOtherWorkers() { Worker workerA = scheduler.createWorker(); CountingRunnable counterA = new CountingRunnable(); workerA.schedule(counterA, 1, MINUTES); Worker workerB = scheduler.createWorker(); CountingRunnable counterB = new CountingRunnable(); workerB.schedule(counterB, 1, MINUTES); workerA.dispose(); runUiThreadTasksIncludingDelayedTasks(); assertEquals(0, counterA.get()); assertEquals(1, counterB.get()); }