package com.schibsted.spain.barista; import android.support.annotation.IdRes; import android.support.test.espresso.contrib.RecyclerViewActions; import com.schibsted.spain.barista.exception.BaristaException; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.contrib.RecyclerViewActions.scrollToPosition; import static com.schibsted.spain.barista.custom.ClickChildAction.clickChildWithId; import static com.schibsted.spain.barista.custom.ClickChildAction.clickChildWithText; import static com.schibsted.spain.barista.custom.DisplayedMatchers.displayedWithId; import static com.schibsted.spain.barista.custom.PerformClickAction.clickUsingPerformClick; public class BaristaRecyclerViewActions { public static void clickRecyclerViewItem(@IdRes int recyclerViewId, int... positions) { if (positions.length == 0) { throw new BaristaException("positions cannot be empty"); } for (int p : positions) { performClick(recyclerViewId, p); } } private static void performClick(@IdRes int recyclerViewId, int position) { onView(displayedWithId(recyclerViewId)).perform( RecyclerViewActions.actionOnItemAtPosition(position, clickUsingPerformClick())); } public static void scrollTo(int recyclerViewId, int position) { onView(displayedWithId(recyclerViewId)).perform(scrollToPosition(position)); } public static void clickRecyclerViewItemChild(@IdRes int recyclerViewId, int position, @IdRes int itemToClickId) { onView(displayedWithId(recyclerViewId)).perform( RecyclerViewActions.actionOnItemAtPosition(position, clickChildWithId(itemToClickId))); } public static void clickRecyclerViewItemChild(@IdRes int recyclerViewId, int position, String text) { onView(displayedWithId(recyclerViewId)).perform( RecyclerViewActions.actionOnItemAtPosition(position, clickChildWithText(text))); } }