package com.huhx0015.gw2at.view.activities; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.ViewInteraction; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.LargeTest; import com.huhx0015.gw2at.R; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; 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.closeSoftKeyboard; import static android.support.test.espresso.action.ViewActions.replaceText; import static android.support.test.espresso.action.ViewActions.scrollTo; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withParent; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.allOf; import static org.junit.Assert.assertEquals; @LargeTest @RunWith(AndroidJUnit4.class) public class TestMainActivity { /** CLASS VARIABLES ________________________________________________________________________ **/ @Rule public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class); /** TEST METHODS ___________________________________________________________________________ **/ @Test public void useAppContext() throws Exception { Context appContext = InstrumentationRegistry.getTargetContext(); assertEquals("com.huhx0015.gw2at", appContext.getPackageName()); } @Test public void loginFragmentTest() { openNavigationDrawer(); selectLoginNavigationDrawer(); typeApiKeyInput(); pressLoginButton(); } @Test public void serverStatusFragmentTest() { openNavigationDrawer(); selectServerStatusNavigationDrawer(); } @Test public void quaggansFragmentTest() { openNavigationDrawer(); selectQuaggansNavigationDrawer(); } @Test public void mainActivityTest() { loginFragmentTest(); // LoginFragment test. serverStatusFragmentTest(); // ServerStatusFragment test. quaggansFragmentTest(); // QuaggansFragment test. openNavigationDrawer(); selectQuitNavigationDrawer(); } /** TEST HELPER METHODS ____________________________________________________________________ **/ private void openNavigationDrawer() { ViewInteraction appCompatImageButton = onView( allOf(withContentDescription("Open navigation drawer"), withParent(withId(R.id.main_toolbar)), isDisplayed())); appCompatImageButton.perform(click()); } private void pressLoginButton() { ViewInteraction appCompatButton = onView(allOf(withId(R.id.login_button), isDisplayed())); appCompatButton.perform(scrollTo(), click()); } private void pressSnackbarRetryButton() { ViewInteraction appCompatButton = onView( allOf(withId(R.id.snackbar_action), withText("Retry"), isDisplayed())); appCompatButton.perform(click()); } private void typeApiKeyInput() { ViewInteraction textInputEditText = onView(allOf(withId(R.id.login_api_key_field), isDisplayed())); textInputEditText.perform(replaceText("ABCDEFGH-AAAA-1234-BBBB-1234567890123456-CCCC-DDDD-EEEE-123456789012"), closeSoftKeyboard()); } private void selectLoginNavigationDrawer() { ViewInteraction appCompatCheckedTextView = onView( allOf(withId(R.id.design_menu_item_text), withText("Login"), isDisplayed())); appCompatCheckedTextView.perform(click()); } private void selectServerStatusNavigationDrawer() { ViewInteraction appCompatCheckedTextView = onView( allOf(withId(R.id.design_menu_item_text), withText("Server Status"), isDisplayed())); appCompatCheckedTextView.perform(click()); } private void selectQuaggansNavigationDrawer() { ViewInteraction appCompatCheckedTextView = onView( allOf(withId(R.id.design_menu_item_text), withText("Quaggans"), isDisplayed())); appCompatCheckedTextView.perform(click()); } private void selectQuitNavigationDrawer() { ViewInteraction appCompatCheckedTextView = onView( allOf(withId(R.id.design_menu_item_text), withText("Quit"), isDisplayed())); appCompatCheckedTextView.perform(click()); } }