package com.badoo.chateau.example.ui.conversations.list; import android.support.v7.widget.RecyclerView; import com.badoo.chateau.example.data.model.ExampleConversation; import com.badoo.chateau.example.ui.utils.TestUtils; import com.badoo.chateau.extras.MultiSelectionHelper; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class ConversationsAdapterTest { private ConversationViewHolder.OnConversationClickedListener mClickListener; private ConversationsAdapter mAdapter; private RecyclerView.AdapterDataObserver mDataObserver; private MultiSelectionHelper mSelectionHelper; @Before public void setupAdapter() throws Exception { mClickListener = mock(ConversationViewHolder.OnConversationClickedListener.class); mSelectionHelper = mock(MultiSelectionHelper.class); mAdapter = new ConversationsAdapter(mClickListener); mAdapter.setSelectionHelper(mSelectionHelper); mDataObserver = TestUtils.fixAdapterForTesting(mAdapter); } @Test public void testNewAdapterIsEmpty() { assertEquals(0, mAdapter.getItemCount()); } @Test public void setSetConversations() { // Given List<ExampleConversation> conversations = createConversations(10); // When mAdapter.setConversations(conversations); // Then verify(mDataObserver).onChanged(); assertEquals(conversations.size(), mAdapter.getItemCount()); } @Test public void updateConversationWithEmptyList() { // When mAdapter.setConversations(Collections.singletonList(createConversation(0))); // Then assertEquals(1, mAdapter.getItemCount()); verify(mDataObserver).onChanged(); } @Test public void getSelectedItemsNoSelection() { // Given when(mSelectionHelper.getSelectedItems()).thenReturn(Collections.emptySet()); // When List<ExampleConversation> selected = mAdapter.getSelectedConversations(); // Then assertEquals(0, selected.size()); } @Test public void getSelectedItems() { // Given Set<Integer> selectedIds = new HashSet<>(); selectedIds.add(0); selectedIds.add(3); selectedIds.add(8); when(mSelectionHelper.getSelectedItems()).thenReturn(selectedIds); mAdapter.setConversations(createConversations(10)); // When List<ExampleConversation> selected = mAdapter.getSelectedConversations(); // Then assertEquals(3, selected.size()); } private List<ExampleConversation> createConversations(int count) { List<ExampleConversation> conversations = new ArrayList<>(); for (int i = 0; i < count; i++) { conversations.add(createConversation(i)); } return conversations; } private ExampleConversation createConversation(int id) { return new ExampleConversation(Integer.toString(id), "convo" + id, Collections.emptyList(), null, 0); } }