package com.kickstarter.ui.adapters; import android.util.Pair; import com.kickstarter.KSRobolectricTestCase; import com.kickstarter.factories.ProjectFactory; import com.kickstarter.models.Project; import com.kickstarter.ui.viewholders.ProjectSearchResultViewHolder; import org.junit.Test; import java.util.Arrays; import java.util.Collections; import java.util.List; public class SearchAdapterTest extends KSRobolectricTestCase implements SearchAdapter.Delegate { private SearchAdapter adapter = new SearchAdapter(this); @Test public void load3PopularProjects() throws Exception { final Project project0 = ProjectFactory.allTheWayProject(); final Project project1 = ProjectFactory.almostCompletedProject(); final Project project2 = ProjectFactory.backedProject(); this.adapter.loadPopularProjects(Arrays.asList(project0, project1, project2)); final List<List<Pair<Project, Boolean>>> data = Arrays.asList( Collections.singletonList(null), Collections.singletonList(Pair.create(project0, true)), Arrays.asList(Pair.create(project1, false), Pair.create(project2, false)) ); assertEquals(data, this.adapter.sections()); } @Test public void load1PopularProjects() throws Exception { final Project project0 = ProjectFactory.allTheWayProject(); this.adapter.loadPopularProjects(Collections.singletonList(project0)); final List<List<Pair<Project, Boolean>>> data = Arrays.asList( Collections.singletonList(null), Collections.singletonList(Pair.create(project0, true)), Collections.emptyList() ); assertEquals(data, this.adapter.sections()); } @Test public void load0PopularProjects() throws Exception { this.adapter.loadPopularProjects(Collections.emptyList()); final List<List<Pair<Project, Boolean>>> data = Collections.emptyList(); assertEquals(data, this.adapter.sections()); } @Test public void load3SearchProjects() throws Exception { final Project project0 = ProjectFactory.allTheWayProject(); final Project project1 = ProjectFactory.almostCompletedProject(); final Project project2 = ProjectFactory.backedProject(); this.adapter.loadSearchProjects(Arrays.asList(project0, project1, project2)); final List<List<Pair<Project, Boolean>>> data = Arrays.asList( Collections.emptyList(), Collections.singletonList(Pair.create(project0, true)), Arrays.asList(Pair.create(project1, false), Pair.create(project2, false)) ); assertEquals(data, this.adapter.sections()); } @Test public void load1SearchProjects() throws Exception { final Project project0 = ProjectFactory.allTheWayProject(); this.adapter.loadSearchProjects(Collections.singletonList(project0)); final List<List<Pair<Project, Boolean>>> data = Arrays.asList( Collections.emptyList(), Collections.singletonList(Pair.create(project0, true)), Collections.emptyList() ); assertEquals(data, this.adapter.sections()); } @Test public void load0SearchProjects() throws Exception { this.adapter.loadSearchProjects(Collections.emptyList()); final List<List<Pair<Project, Boolean>>> data = Collections.emptyList(); assertEquals(data, this.adapter.sections()); } @Override public void projectSearchResultClick(final ProjectSearchResultViewHolder viewHolder, final Project project) { // nothing to do here } }