@Test public void updateWithADifferentItemNotifiesRemoveAndAdd() { Item oldItem = new ContentUpdatingItem(1, "contents"); Section group = new Section(); group.setHeader(new DummyItem()); group.update(Collections.singletonList(oldItem)); group.registerGroupDataObserver(groupAdapter); Item newItem = new ContentUpdatingItem(2, "contents"); group.update(Collections.singletonList(newItem)); verify(groupAdapter).onItemRangeRemoved(group, 1, 1); verify(groupAdapter).onItemRangeInserted(group, 1, 1); }
@Test public void updateWithTheSameItemButDifferentContentsNotifiesChange() { Item oldItem = new ContentUpdatingItem(1, "contents"); Section group = new Section(); group.setHeader(new DummyItem()); group.update(Collections.singletonList(oldItem)); group.registerGroupDataObserver(groupAdapter); Item newItem = new ContentUpdatingItem(1, "new contents"); group.update(Collections.singletonList(newItem)); verify(groupAdapter).onItemRangeChanged(group, 1, 1, null); }
@Test public void updateWithTheSameItemAndSameContentsDoesNotNotifyChange() { List<Item> children = new ArrayList<Item>(); Item item = new ContentUpdatingItem(1, "contents"); children.add(item); Section group = new Section(); group.setHeader(new DummyItem()); group.update(children); group.registerGroupDataObserver(groupAdapter); group.update(children); verifyNoMoreInteractions(groupAdapter); }
@Test public void updateWithANestedGroupsNotifiesRemoveAndAdd() { Item oldItem = new ContentUpdatingItem(1, "contents"); Section group = new Section(); group.setHeader(new DummyItem()); group.update(Collections.singletonList(oldItem)); group.registerGroupDataObserver(groupAdapter); Item newItem = new ContentUpdatingItem(2, "new contents"); Section newGroup = new Section(); newGroup.add(newItem); group.update(Collections.singletonList(newGroup)); verify(groupAdapter).onItemRangeRemoved(group, 1, 1); verify(groupAdapter).onItemRangeInserted(group, 1, 1); }