package com.ftinc.scoop.ui; import android.app.Instrumentation; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.preference.PreferenceManager; import android.support.annotation.ColorInt; import android.support.annotation.ColorRes; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.Espresso; import android.support.test.espresso.contrib.RecyclerViewActions; import android.support.test.filters.LargeTest; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import android.support.v7.app.AppCompatDelegate; import com.ftinc.scoop.R; import com.ftinc.scoop.Scoop; import com.ftinc.scoop.util.AttrUtils; import com.ftinc.scoop.util.RecyclerViewMatcher; import com.ftinc.scoop.util.ScoopsActivityTestRule; import com.ftinc.scoop.util.TestUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import static android.support.test.espresso.Espresso.*; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.assertion.ViewAssertions.matches; 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.ftinc.scoop.util.TestUtils.withRecyclerView; import static com.ftinc.scoop.util.TestUtils.withTextColor; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.junit.Assert.*; /** * Created by r0adkll on 6/11/16. */ @RunWith(AndroidJUnit4.class) @LargeTest public class ScoopSettingsActivityTest { @Rule public ScoopsActivityTestRule<ScoopSettingsActivity> mActivityRule = new ScoopsActivityTestRule<>(ScoopSettingsActivity.class); @Test public void test_Inflation(){ checkPositionInflation(0, "Default"); checkPositionInflation(1, "Light"); checkPositionInflation(2, "DayNight"); checkPositionInflation(3, "Alternate 1"); checkPositionInflation(4, "Alternate 2"); } @Test public void test_DayNightSelection(){ // Select the daynight position item onView(withId(R.id.recycler)).perform( RecyclerViewActions.actionOnItemAtPosition(2, click())); // Now verify that the daynight group options are exposed onView(withRecyclerView(R.id.recycler).atPositionOnView(2, R.id.daynight_options)) .check(matches(isDisplayed())); } @Test public void test_DayNightModeChange(){ // Select the daynight position item onView(withId(R.id.recycler)).perform( RecyclerViewActions.actionOnItemAtPosition(2, click())); onView(withRecyclerView(R.id.recycler).atPositionOnView(2, R.id.opt_auto)) .perform(click()); assertThat(Scoop.getInstance().getDayNightMode(), is(AppCompatDelegate.MODE_NIGHT_AUTO)); onView(withRecyclerView(R.id.recycler).atPositionOnView(2, R.id.opt_system)) .perform(click()); assertThat(Scoop.getInstance().getDayNightMode(), is(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)); onView(withRecyclerView(R.id.recycler).atPositionOnView(2, R.id.opt_off)) .perform(click()); assertThat(Scoop.getInstance().getDayNightMode(), is(AppCompatDelegate.MODE_NIGHT_NO)); onView(withRecyclerView(R.id.recycler).atPositionOnView(2, R.id.opt_on)) .perform(click()); assertThat(Scoop.getInstance().getDayNightMode(), is(AppCompatDelegate.MODE_NIGHT_YES)); } private void checkPositionInflation(int position, String expectedText){ onView(withRecyclerView(R.id.recycler) .atPositionOnView(position, R.id.title)) .check(matches(withText(expectedText))); } }