package com.orgzly.android.espresso; import android.support.test.rule.ActivityTestRule; import com.orgzly.R; import com.orgzly.android.OrgzlyTest; import com.orgzly.android.ui.MainActivity; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu; import static android.support.test.espresso.Espresso.openContextualActionModeOverflowMenu; import static android.support.test.espresso.Espresso.pressBack; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.longClick; import static android.support.test.espresso.action.ViewActions.replaceText; import static android.support.test.espresso.action.ViewActions.typeText; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.contrib.DrawerActions.open; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static com.orgzly.android.espresso.EspressoUtils.onListItem; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.not; public class FiltersFragmentTest extends OrgzlyTest { @Rule public ActivityTestRule activityRule = new ActivityTestRule<>(MainActivity.class, true, false); @Before public void setUp() throws Exception { super.setUp(); shelfTestUtils.setupBook("book-one", "Preface\n* Note A.\n"); activityRule.launchActivity(null); onView(withId(R.id.drawer_layout)).perform(open()); onView(withText(R.string.searches)).perform(click()); } @Test public void testNewSameNameFilter() { onView(withId(R.id.fab)).perform(click()); onView(withId(R.id.fragment_filter_flipper)).check(matches(isDisplayed())); onView(withId(R.id.fragment_filter_name)).perform(replaceText("Scheduled")); onView(withId(R.id.fragment_filter_query)).perform(replaceText("s.done")); onView(withId(R.id.done)).perform(click()); onView(withText(R.string.filter_name_already_exists)).check(matches(isDisplayed())); onView(withId(R.id.fragment_filter_flipper)).check(matches(isDisplayed())); onView(withId(R.id.fragment_filter_name)).perform(replaceText("SCHEDULED")); onView(withId(R.id.fragment_filter_query)).perform(replaceText("s.done")); onView(withId(R.id.done)).perform(click()); onView(withText(R.string.filter_name_already_exists)).check(matches(isDisplayed())); onView(withId(R.id.fragment_filter_flipper)).check(matches(isDisplayed())); } @Test public void testUpdateSameNameFilter() { onView(withId(R.id.fragment_filters_flipper)).check(matches(isDisplayed())); onListItem(0).perform(click()); onView(withId(R.id.fragment_filter_flipper)).check(matches(isDisplayed())); onView(withId(R.id.fragment_filter_query)).perform(typeText(" edited")); onView(withId(R.id.done)).perform(click()); onView(withId(R.id.fragment_filters_flipper)).check(matches(isDisplayed())); } @Test public void testDeletingFilterThenGoingBackToIt() { onView(withId(R.id.fragment_filters_flipper)).check(matches(isDisplayed())); onListItem(0).perform(click()); onView(withId(R.id.fragment_filter_flipper)).check(matches(isDisplayed())); onView(withId(R.id.drawer_layout)).perform(open()); onView(withText(R.string.searches)).perform(click()); onView(withId(R.id.fragment_filters_flipper)).check(matches(isDisplayed())); onListItem(0).perform(longClick()); openContextualActionModeOverflowMenu(); onView(withText(R.string.delete)).perform(click()); pressBack(); onView(withText(R.string.fragment_filter_does_not_exist)).check(matches(isDisplayed())); } @Test public void testActionModeWhenSelectingFilterThenOpeningBook() { onListItem(0).perform(longClick()); onView(withId(R.id.drawer_layout)).perform(open()); onView(allOf(withText("book-one"), isDisplayed())).perform(click()); onView(withId(R.id.filters_cab_move_up)).check(matches(not(isDisplayed()))); } @Test public void testMovingFilterDown() { onListItem(0).perform(longClick()); onView(withId(R.id.filters_cab_move_down)).perform(click()); } }