@Test public void addEmptyBodyContentDoesNotRemovePlaceholder() { Section section = new Section(); section.registerGroupDataObserver(groupAdapter); section.setPlaceholder(placeholder); section.add(emptyGroup); verify(groupAdapter, never()).onItemRangeRemoved(any(Section.class), anyInt(), anyInt()); }
@Test public void removeHeaderRemovesHeader() { Section section = new Section(); section.setHeader(header); section.registerGroupDataObserver(groupAdapter); section.removeHeader(); verify(groupAdapter).onItemRangeRemoved(section, 0, headerSize); }
@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 removeFooterRemovesFooter() { Section section = new Section(); section.setFooter(footer); section.registerGroupDataObserver(groupAdapter); section.removeFooter(); verify(groupAdapter).onItemRangeRemoved(section, 0, footerSize); }
@Test public void removingHeaderNotifiesPreviousHeaderRemoved() { Section section = new Section(); section.registerGroupDataObserver(groupAdapter); section.setHeader(header); section.removeHeader(); verify(groupAdapter).onItemRangeRemoved(section, 0, headerSize); }
@Test public void setHideWhenEmptyRemovesAnExistingPlaceholder() { Section section = new Section(); section.setPlaceholder(placeholder); section.registerGroupDataObserver(groupAdapter); section.setHideWhenEmpty(true); verify(groupAdapter).onItemRangeRemoved(section, 0, placeholderSize); }
@Test public void updateGroupWithPlaceholderNotifiesRemovePlaceholderAndInsert() { List<Item> children = new ArrayList<Item>(); children.add(new AlwaysUpdatingItem(1)); children.add(new AlwaysUpdatingItem(2)); Section group = new Section(); group.setHeader(new DummyItem()); group.setPlaceholder(new DummyItem()); group.registerGroupDataObserver(groupAdapter); group.update(children); verify(groupAdapter).onItemRangeRemoved(group, 1, 1); verify(groupAdapter).onItemRangeInserted(group, 1, 2); verifyNoMoreInteractions(groupAdapter); }
@Test public void updateGroupToEmptyWithPlaceholderNotifiesRemoveAndInsertPlaceholder() { List<Item> children = new ArrayList<Item>(); children.add(new AlwaysUpdatingItem(1)); children.add(new AlwaysUpdatingItem(2)); Section group = new Section(); group.setHeader(new DummyItem()); group.setPlaceholder(new DummyItem()); group.update(children); group.registerGroupDataObserver(groupAdapter); group.update(new ArrayList<Group>()); verify(groupAdapter).onItemRangeRemoved(group, 1, 2); verify(groupAdapter).onItemRangeInserted(group, 1, 1); verifyNoMoreInteractions(groupAdapter); } }
@Test public void replacingAnExistingPlaceholderNotifiesChange() { Section section = new Section(); section.setPlaceholder(placeholder); section.registerGroupDataObserver(groupAdapter); final int newPlaceholderSize = 1; Group newPlaceholder = new DummyGroup() { @Override public int getItemCount() { return newPlaceholderSize; } }; section.setPlaceholder(newPlaceholder); verify(groupAdapter).onItemRangeRemoved(section, 0, placeholderSize); verify(groupAdapter).onItemRangeInserted(section, 0, newPlaceholderSize); }
@Test public void addBodyContentRemovesPlaceholder() { Section section = new Section(); section.registerGroupDataObserver(groupAdapter); section.setPlaceholder(placeholder); section.add(new DummyItem()); verify(groupAdapter).onItemRangeRemoved(section, 0, placeholderSize); }
@Test public void setHideWhenEmptyRemovesExistingHeaderAndFooter() { Section section = new Section(); section.setHeader(header); section.setFooter(footer); section.registerGroupDataObserver(groupAdapter); section.setHideWhenEmpty(true); verify(groupAdapter).onItemRangeRemoved(section, 0, headerSize + footerSize); }
@Test public void removeAllUnorderedGroupsFromNestedSectionNotifiesAtCorrectIndexes() throws Exception { final Section rootSection = new Section(); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(Collections.singletonList(new DummyItem())); rootSection.add(nestedSection2); final Section nestedSection3 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); rootSection.add(nestedSection3); reset(groupAdapter); rootSection.removeAll(Arrays.asList(nestedSection2, nestedSection3, nestedSection1)); final InOrder adapterCalls = inOrder(groupAdapter, groupAdapter, groupAdapter); adapterCalls.verify(groupAdapter).onItemRangeRemoved(rootSection, 3, 1); adapterCalls.verify(groupAdapter).onItemRangeRemoved(rootSection, 3, 2); adapterCalls.verify(groupAdapter).onItemRangeRemoved(rootSection, 0, 3); }
@Test public void removePlaceholderNotifies() { Section section = new Section(); section.setHeader(header); section.setFooter(footer); section.setPlaceholder(placeholder); section.registerGroupDataObserver(groupAdapter); section.removePlaceholder(); verify(groupAdapter).onItemRangeRemoved(section, headerSize, placeholderSize); }
@Test public void setHideWhenEmptyRemovesExistingHeaderFooterAndPlaceholder() { Section section = new Section(); section.setHeader(header); section.setFooter(footer); section.setPlaceholder(placeholder); section.registerGroupDataObserver(groupAdapter); section.setHideWhenEmpty(true); verify(groupAdapter).onItemRangeRemoved(section, 0, headerSize + footerSize + placeholderSize); }
@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); }
@Test public void removingFooterNotifiesPreviousFooterRemoved() { Section section = new Section(); section.setHeader(header); section.add(new DummyItem()); section.setFooter(footer); section.registerGroupDataObserver(groupAdapter); section.removeFooter(); verify(groupAdapter).onItemRangeRemoved(section, headerSize + 1, footerSize); }
@Test public void removeAllGroupFromNestedSectionNotifiesAtCorrectIndex() throws Exception { final Section rootSection = new Section(); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); rootSection.add(nestedSection2); reset(groupAdapter); rootSection.removeAll(Collections.singletonList(nestedSection2)); verify(groupAdapter).onItemRangeRemoved(rootSection, 3, 2); }
@Test public void removeGroupFromNestedSectionNotifiesAtCorrectIndex() throws Exception { final Section rootSection = new Section(); rootSection.registerGroupDataObserver(groupAdapter); groupAdapter.add(rootSection); final Section nestedSection1 = new Section(Arrays.asList(new DummyItem(), new DummyItem(), new DummyItem())); rootSection.add(nestedSection1); final Section nestedSection2 = new Section(Arrays.asList(new DummyItem(), new DummyItem())); rootSection.add(nestedSection2); reset(groupAdapter); rootSection.remove(nestedSection2); verify(groupAdapter).onItemRangeRemoved(rootSection, 3, 2); }
@Test public void collapseNotifies() throws Exception { ExpandableGroup expandableGroup = new ExpandableGroup(parent); Section section = new Section(); int sectionSize = 5; for (int i = 0; i < sectionSize; i++) { section.add(new DummyItem()); } expandableGroup.add(section); Item lastItem = new DummyItem(); expandableGroup.add(lastItem); expandableGroup.onToggleExpanded(); expandableGroup.registerGroupDataObserver(groupAdapter); expandableGroup.onToggleExpanded(); Mockito.verify(groupAdapter).onItemRangeRemoved(expandableGroup, 1, 6); }