package org.solovyev.android.calculator.wizard; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.LargeTest; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.solovyev.android.calculator.R; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.swipeLeft; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.RootMatchers.isDialog; import static android.support.test.espresso.matcher.ViewMatchers.*; import static net.slideshare.mobile.test.util.OrientationChangeAction.orientationLandscape; import static net.slideshare.mobile.test.util.OrientationChangeAction.orientationPortrait; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.not; @RunWith(AndroidJUnit4.class) @LargeTest public class WizardActivityTest { @Rule public ActivityTestRule<WizardActivity> rule = new ActivityTestRule<>(WizardActivity.class); @Test public void shouldShowConfirmationDialogOnSkip() { onView(withText(R.string.cpp_wizard_skip)).perform(click()); onView(withText(R.string.cpp_wizard_finish_confirmation_title)).inRoot(isDialog()).check(matches(isDisplayed())); } @Test public void testShouldGoThroughTheWizard() throws Exception { onView(withText(R.string.cpp_wizard_start)).perform(click()); onView(withId(R.id.pager)).check(matches(allOf( hasDescendant(withText(R.string.cpp_wizard_mode_title)), not(hasDescendant(withText(R.string.cpp_wizard_welcome_title)))))); onView(withId(R.id.pager)).perform(swipeLeft()); onView(withId(R.id.pager)).check(matches(hasDescendant(withText(R.string.cpp_wizard_theme_title)))); onView(withId(R.id.pager)).perform(swipeLeft()); onView(withId(R.id.pager)).check(matches(hasDescendant(withText(R.string.cpp_wizard_onscreen_description)))); onView(withId(R.id.pager)).perform(swipeLeft()); onView(withId(R.id.pager)).check(matches(hasDescendant(withText(R.string.cpp_wizard_dragbutton_description)))); onView(withId(R.id.pager)).perform(swipeLeft()); onView(withId(R.id.pager)).check(matches(hasDescendant(withText(R.string.cpp_wizard_final_done)))); onView(withText(R.string.cpp_wizard_final_done)).perform(click()); } @Test public void testShouldPreserveStepOnScreenRotation() throws Exception { onView(withId(R.id.pager)).perform(swipeLeft()); onView(isRoot()).perform(orientationLandscape()); onView(withId(R.id.pager)).check(matches(hasDescendant(withText(R.string.cpp_wizard_mode_title)))); onView(isRoot()).perform(orientationPortrait()); onView(withId(R.id.pager)).check(matches(hasDescendant(withText(R.string.cpp_wizard_mode_title)))); } }