@Override public void bind(@NonNull final View view) { final ViewDataBinding viewDataBinding = DataBindingUtil.bind(view); for (int i = 0; i < handlers.size(); i++) { final int variableId = handlers.keyAt(i); viewDataBinding.setVariable(variableId, handlers.get(variableId)); } viewDataBinding.executePendingBindings(); }
@Override public void recycle(@NonNull final View view) { if ((recycleConfig & CLEAR_HANDLERS) != 0) { final ViewDataBinding viewDataBinding = DataBindingUtil.bind(view); for (int i = 0; i < handlers.size(); i++) { viewDataBinding.setVariable(handlers.keyAt(i), null); } viewDataBinding.executePendingBindings(); } } }
@Test public void shouldHandleRebindWithSameData() { final RepositoryPresenter<String> repositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .forItem(); repositoryPresenter.bind(STRING, 0, viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, STRING); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); reset(viewDataBinding); repositoryPresenter.bind(STRING, 0, viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, STRING); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldBindRepositoryPresenterOfList() { final RepositoryPresenter<List<String>> listRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .forList(); listRepositoryPresenter.bind(STRING_LIST, 1, viewHolder); verify(view).setTag(R.id.agera__rvdatabinding__item_id, ITEM_ID); verify(viewDataBinding).setVariable(ITEM_ID, SECOND_STRING); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldBindRepositoryPresenterWithoutItem() { final RepositoryPresenter<String> repositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .forItem(); repositoryPresenter.bind(STRING, 0, viewHolder); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldBindRepositoryPresenterOfResultList() { final RepositoryPresenter<Result<List<String>>> resultListRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .forResultList(); resultListRepositoryPresenter.bind(STRING_LIST_RESULT, 1, viewHolder); verify(view).setTag(R.id.agera__rvdatabinding__item_id, ITEM_ID); verify(viewDataBinding).setVariable(ITEM_ID, SECOND_STRING); verify(viewDataBinding).setVariable(HANDLER_ID, HANDLER); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldHandleRecycleOfRepositoryPresenterWithoutItemId() { final RepositoryPresenter<String> repositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .onRecycle(CLEAR_ALL) .forItem(); repositoryPresenter.recycle(viewHolder); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldBindLayoutPresenter() { final LayoutPresenter layoutPresenter = dataBindingLayoutPresenterFor(LAYOUT_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .build(); layoutPresenter.bind(view); verify(viewDataBinding).setVariable(HANDLER_ID, HANDLER); verify(viewDataBinding).setVariable(SECOND_HANDLER_ID, SECOND_HANDLER); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfResultListWithItemRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<Result<List<String>>> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_ITEM) .forResultList(); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfListWithItemRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<List<String>> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_ITEM) .forList(); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldBindRepositoryPresenterOfResult() { final RepositoryPresenter<Result<String>> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .forResult(); resultRepositoryPresenter.bind(STRING_RESULT, 0, viewHolder); verify(view).setTag(R.id.agera__rvdatabinding__item_id, ITEM_ID); verify(viewDataBinding).setVariable(ITEM_ID, STRING); verify(viewDataBinding).setVariable(HANDLER_ID, HANDLER); verify(viewDataBinding).setVariable(SECOND_HANDLER_ID, SECOND_HANDLER); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfItemWithHandlerRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<String> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_HANDLERS) .forItem(); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(HANDLER_ID, null); verify(viewDataBinding).setVariable(SECOND_HANDLER_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfResultWithItemRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<Result<String>> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_ITEM) .forResult(); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfItemWithItemRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<String> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_ITEM) .forItem(); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfResultWithHandlerRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<Result<String>> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_HANDLERS) .forResult(); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(HANDLER_ID, null); verify(viewDataBinding).setVariable(SECOND_HANDLER_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfListWithHandlerRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<List<String>> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_HANDLERS) .forList(); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(HANDLER_ID, null); verify(viewDataBinding).setVariable(SECOND_HANDLER_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleLayoutPresenterWithHandlerRecycling() { final LayoutPresenter layoutPresenter = dataBindingLayoutPresenterFor(LAYOUT_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_HANDLERS) .build(); layoutPresenter.recycle(view); verify(viewDataBinding).setVariable(HANDLER_ID, null); verify(viewDataBinding).setVariable(SECOND_HANDLER_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleLayoutPresenterWithAllRecycling() { final LayoutPresenter layoutPresenter = dataBindingLayoutPresenterFor(LAYOUT_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_ALL) .build(); layoutPresenter.recycle(view); verify(viewDataBinding).setVariable(HANDLER_ID, null); verify(viewDataBinding).setVariable(SECOND_HANDLER_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldBindRepositoryPresenterCollectionOfCollection() { final RepositoryPresenter<String> repositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .collectionId(COLLECTION_ID) .forCollection(new StringToFirstCharStringList()); repositoryPresenter.bind(STRING, 0, viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, FIRST_STRING_CHARACTER); verify(viewDataBinding).setVariable(COLLECTION_ID, STRING); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }
@Test public void shouldRecycleRepositoryPresenterOfCollectionWithItemRecycling() { when(view.getTag(R.id.agera__rvdatabinding__item_id)).thenReturn(ITEM_ID); final RepositoryPresenter<String> resultRepositoryPresenter = dataBindingRepositoryPresenterOf(String.class) .layout(LAYOUT_ID) .itemId(ITEM_ID) .handler(HANDLER_ID, HANDLER) .handler(SECOND_HANDLER_ID, SECOND_HANDLER) .onRecycle(CLEAR_ITEM) .collectionId(COLLECTION_ID) .forCollection(new StringToFirstCharStringList()); resultRepositoryPresenter.recycle(viewHolder); verify(viewDataBinding).setVariable(ITEM_ID, null); verify(viewDataBinding).executePendingBindings(); verifyNoMoreInteractions(viewDataBinding); }