use of android.support.test.espresso.ViewAction in project todo-mvp-rxjava by albertizzy.
the class NavigationViewActions method navigateTo.
/**
* Returns a {@link ViewAction} that navigates to a menu item in {@link NavigationView} using a
* menu item resource id.
*
* <p>
* View constraints:
* <ul>
* <li>View must be a child of a {@link DrawerLayout}
* <li>View must be of type {@link NavigationView}
* <li>View must be visible on screen
* <li>View must be displayed on screen
* <ul>
*
* @param menuItemId the resource id of the menu item
* @return a {@link ViewAction} that navigates on a menu item
*/
public static ViewAction navigateTo(final int menuItemId) {
return new ViewAction() {
@Override
public void perform(UiController uiController, View view) {
NavigationView navigationView = (NavigationView) view;
Menu menu = navigationView.getMenu();
if (null == menu.findItem(menuItemId)) {
throw new PerformException.Builder().withActionDescription(this.getDescription()).withViewDescription(HumanReadables.describe(view)).withCause(new RuntimeException(getErrorMessage(menu, view))).build();
}
menu.performIdentifierAction(menuItemId, 0);
uiController.loopMainThreadUntilIdle();
}
private String getErrorMessage(Menu menu, View view) {
String NEW_LINE = System.getProperty("line.separator");
StringBuilder errorMessage = new StringBuilder("Menu item was not found, " + "available menu items:").append(NEW_LINE);
for (int position = 0; position < menu.size(); position++) {
errorMessage.append("[MenuItem] position=").append(position);
MenuItem menuItem = menu.getItem(position);
if (menuItem != null) {
CharSequence itemTitle = menuItem.getTitle();
if (itemTitle != null) {
errorMessage.append(", title=").append(itemTitle);
}
if (view.getResources() != null) {
int itemId = menuItem.getItemId();
try {
errorMessage.append(", id=");
String menuItemResourceName = view.getResources().getResourceName(itemId);
errorMessage.append(menuItemResourceName);
} catch (NotFoundException nfe) {
errorMessage.append("not found");
}
}
errorMessage.append(NEW_LINE);
}
}
return errorMessage.toString();
}
@Override
public String getDescription() {
return "click on menu item with id";
}
@Override
public Matcher<View> getConstraints() {
return allOf(isAssignableFrom(NavigationView.class), withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDisplayingAtLeast(90));
}
};
}
use of android.support.test.espresso.ViewAction in project material-components-android by material-components.
the class BottomNavigationViewActions method setIconForMenuItem.
/** Sets icon for the menu item of the navigation view. */
public static ViewAction setIconForMenuItem(@IdRes final int menuItemId, final Drawable iconDrawable) {
return new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return isDisplayed();
}
@Override
public String getDescription() {
return "Set menu item icon";
}
@Override
public void perform(UiController uiController, View view) {
uiController.loopMainThreadUntilIdle();
BottomNavigationView navigationView = (BottomNavigationView) view;
navigationView.getMenu().findItem(menuItemId).setIcon(iconDrawable);
uiController.loopMainThreadUntilIdle();
}
};
}
use of android.support.test.espresso.ViewAction in project material-components-android by material-components.
the class BaseDynamicCoordinatorLayoutTest method inflateViewStub.
/** Inflates the <code>ViewStub</code> with the passed layout resource. */
protected ViewAction inflateViewStub(@LayoutRes final int layoutResId) {
return new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return allOf(isAssignableFrom(ViewStub.class), hasParent());
}
@Override
public String getDescription() {
return "Inflates view stub";
}
@Override
public void perform(UiController uiController, View view) {
uiController.loopMainThreadUntilIdle();
ViewStub viewStub = (ViewStub) view;
viewStub.setLayoutResource(layoutResId);
viewStub.inflate();
mCoordinatorLayout = (CoordinatorLayout) activityTestRule.getActivity().findViewById(viewStub.getInflatedId());
uiController.loopMainThreadUntilIdle();
}
};
}
use of android.support.test.espresso.ViewAction in project material-components-android by material-components.
the class NavigationViewActions method setItemBackgroundResource.
/** Sets item background on the content of the navigation view. */
public static ViewAction setItemBackgroundResource(@DrawableRes final int resId) {
return new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return isDisplayed();
}
@Override
public String getDescription() {
return "Set item background";
}
@Override
public void perform(UiController uiController, View view) {
uiController.loopMainThreadUntilIdle();
NavigationView navigationView = (NavigationView) view;
navigationView.setItemBackgroundResource(resId);
uiController.loopMainThreadUntilIdle();
}
};
}
use of android.support.test.espresso.ViewAction in project material-components-android by material-components.
the class NavigationViewActions method removeMenuItem.
/**
* Removes the specified menu item from the navigation view.
*
* @param menuItemId The ID of the menu item to be removed.
*/
public static ViewAction removeMenuItem(@IdRes final int menuItemId) {
return new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return isAssignableFrom(NavigationView.class);
}
@Override
public String getDescription() {
return "Remove menu item " + menuItemId;
}
@Override
public void perform(UiController uiController, View view) {
uiController.loopMainThreadUntilIdle();
NavigationView navigationView = (NavigationView) view;
navigationView.getMenu().removeItem(menuItemId);
uiController.loopMainThreadUntilIdle();
}
};
}
Aggregations