diff options
Diffstat (limited to 'app/src/androidTest/java')
10 files changed, 161 insertions, 161 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java index 50109c71a..9e86275fc 100644 --- a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java @@ -1,6 +1,7 @@ package de.test.antennapod; import android.content.Context; +import android.content.SharedPreferences; import android.support.annotation.StringRes; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.PerformException; @@ -12,6 +13,10 @@ import android.support.test.espresso.util.HumanReadables; import android.support.test.espresso.util.TreeIterables; import android.view.View; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.MainActivity; +import de.danoeh.antennapod.core.storage.PodDBAdapter; +import de.danoeh.antennapod.dialog.RatingDialog; +import de.danoeh.antennapod.fragment.QueueFragment; import org.hamcrest.Matcher; import java.io.File; @@ -74,7 +79,7 @@ public class EspressoTestUtils { /** * Clear all app databases */ - public static void clearAppData() { + public static void clearPreferences() { File root = InstrumentationRegistry.getTargetContext().getFilesDir().getParentFile(); String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list(); for (String fileName : sharedPreferencesFileNames) { @@ -84,6 +89,31 @@ public class EspressoTestUtils { } } + public static void makeNotFirstRun() { + InstrumentationRegistry.getTargetContext().getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE) + .edit() + .putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false) + .commit(); + + RatingDialog.init(InstrumentationRegistry.getTargetContext()); + RatingDialog.saveRated(); + } + + public static void setLastNavFragment(String tag) { + InstrumentationRegistry.getTargetContext().getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE) + .edit() + .putString(MainActivity.PREF_LAST_FRAGMENT_TAG, tag) + .commit(); + } + + public static void clearDatabase() { + PodDBAdapter.init(InstrumentationRegistry.getTargetContext()); + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); + adapter.open(); + adapter.close(); + } + public static void clickPreference(@StringRes int title) { onView(withId(R.id.list)).perform( RecyclerViewActions.actionOnItem(hasDescendant(withText(title)), diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java index 63ea697e9..d1ca25ad3 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java @@ -64,15 +64,11 @@ public class PlaybackServiceMediaPlayerTest { @Before public void setUp() throws Exception { assertionError = null; - EspressoTestUtils.clearAppData(); - final Context context = InstrumentationRegistry.getTargetContext(); + EspressoTestUtils.clearPreferences(); + EspressoTestUtils.makeNotFirstRun(); + EspressoTestUtils.clearDatabase(); - // create new database - PodDBAdapter.init(context); - PodDBAdapter.deleteDatabase(); - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.close(); + final Context context = InstrumentationRegistry.getTargetContext(); httpServer = new HTTPBin(); httpServer.start(); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java index d013ab9cf..0c65bb2e6 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java @@ -5,8 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.support.test.InstrumentationRegistry; -import android.support.test.espresso.intent.Intents; -import android.support.test.rule.ActivityTestRule; +import android.support.test.espresso.intent.rule.IntentsTestRule; import android.support.test.runner.AndroidJUnit4; import com.robotium.solo.Solo; import com.robotium.solo.Timeout; @@ -29,7 +28,6 @@ import static android.support.test.InstrumentationRegistry.getInstrumentation; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.contrib.ActivityResultMatchers.hasResultCode; -import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static de.test.antennapod.EspressoTestUtils.clickPreference; import static de.test.antennapod.EspressoTestUtils.openNavDrawer; @@ -45,47 +43,28 @@ public class MainActivityTest { private Solo solo; private UITestUtils uiTestUtils; - private SharedPreferences prefs; @Rule - public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false); + public IntentsTestRule<MainActivity> mActivityRule = new IntentsTestRule<>(MainActivity.class, false, false); @Before public void setUp() throws IOException { - // override first launch preference - // do this BEFORE calling getActivity()! - EspressoTestUtils.clearAppData(); - prefs = InstrumentationRegistry.getContext() - .getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE); - prefs.edit().putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false).commit(); + EspressoTestUtils.clearPreferences(); + EspressoTestUtils.makeNotFirstRun(); + EspressoTestUtils.clearDatabase(); mActivityRule.launchActivity(new Intent()); - Intents.init(); - Context context = mActivityRule.getActivity(); - uiTestUtils = new UITestUtils(context); + uiTestUtils = new UITestUtils(InstrumentationRegistry.getTargetContext()); uiTestUtils.setup(); - // create new database - PodDBAdapter.init(context); - PodDBAdapter.deleteDatabase(); - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.close(); - - RatingDialog.init(context); - RatingDialog.saveRated(); - solo = new Solo(getInstrumentation(), mActivityRule.getActivity()); } @After public void tearDown() throws Exception { uiTestUtils.tearDown(); - solo.finishOpenedActivities(); - Intents.release(); PodDBAdapter.deleteDatabase(); - prefs.edit().clear().commit(); } @Test @@ -93,13 +72,10 @@ public class MainActivityTest { uiTestUtils.addHostedFeedData(); final Feed feed = uiTestUtils.hostedFeeds.get(0); openNavDrawer(); - solo.clickOnText(solo.getString(R.string.add_feed_label)); + onView(withText(R.string.add_feed_label)).perform(click()); solo.enterText(1, feed.getDownload_url()); - solo.clickOnButton(solo.getString(R.string.confirm_label)); - solo.waitForActivity(OnlineFeedViewActivity.class); - solo.waitForView(R.id.butSubscribe); - assertEquals(solo.getString(R.string.subscribe_label), solo.getButton(0).getText().toString()); - solo.clickOnButton(0); + onView(withText(R.string.confirm_label)).perform(click()); + onView(withText(R.string.subscribe_label)).perform(click()); assertTrue(solo.waitForText(solo.getString(R.string.open_podcast), 0, Timeout.getLargeTimeout(), false)); } @@ -119,7 +95,6 @@ public class MainActivityTest { onView(withText(R.string.confirm_label)).perform(click()); solo.goBackToActivity(MainActivity.class.getSimpleName()); - solo.goBack(); // Close nav drawer solo.goBack(); assertEquals(solo.getString(R.string.subscriptions_label), getActionbarTitle()); } @@ -132,7 +107,6 @@ public class MainActivityTest { clickPreference(R.string.pref_back_button_behavior_title); onView(withText(R.string.back_button_open_drawer)).perform(click()); solo.goBackToActivity(MainActivity.class.getSimpleName()); - solo.goBack(); // Close nav drawer solo.goBack(); assertTrue(((MainActivity)solo.getCurrentActivity()).isDrawerOpen()); } @@ -145,7 +119,6 @@ public class MainActivityTest { clickPreference(R.string.pref_back_button_behavior_title); onView(withText(R.string.back_button_double_tap)).perform(click()); solo.goBackToActivity(MainActivity.class.getSimpleName()); - solo.goBack(); // Close nav drawer solo.goBack(); solo.goBack(); assertThat(mActivityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED)); @@ -159,7 +132,6 @@ public class MainActivityTest { clickPreference(R.string.pref_back_button_behavior_title); onView(withText(R.string.back_button_show_prompt)).perform(click()); solo.goBackToActivity(MainActivity.class.getSimpleName()); - solo.goBack(); // Close nav drawer solo.goBack(); onView(withText(R.string.yes)).perform(click()); Thread.sleep(100); @@ -174,7 +146,6 @@ public class MainActivityTest { clickPreference(R.string.pref_back_button_behavior_title); onView(withText(R.string.back_button_default)).perform(click()); solo.goBackToActivity(MainActivity.class.getSimpleName()); - solo.goBack(); // Close nav drawer solo.goBack(); assertThat(mActivityRule.getActivityResult(), hasResultCode(Activity.RESULT_CANCELED)); } diff --git a/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java b/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java index 0ed62010b..548843636 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java @@ -4,13 +4,11 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.support.test.InstrumentationRegistry; +import android.support.test.espresso.ViewInteraction; import android.support.test.espresso.contrib.DrawerActions; -import android.support.test.espresso.intent.Intents; -import android.support.test.filters.FlakyTest; -import android.support.test.rule.ActivityTestRule; +import android.support.test.espresso.intent.rule.IntentsTestRule; import android.support.test.runner.AndroidJUnit4; -import android.widget.ListView; -import com.robotium.solo.Solo; +import android.view.View; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.activity.PreferenceActivity; @@ -23,6 +21,7 @@ import de.danoeh.antennapod.fragment.EpisodesFragment; import de.danoeh.antennapod.fragment.PlaybackHistoryFragment; import de.danoeh.antennapod.fragment.QueueFragment; import de.test.antennapod.EspressoTestUtils; +import org.hamcrest.Matcher; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -34,20 +33,20 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static android.support.test.InstrumentationRegistry.getInstrumentation; 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.longClick; +import static android.support.test.espresso.action.ViewActions.scrollTo; import static android.support.test.espresso.intent.Intents.intended; import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent; import static android.support.test.espresso.matcher.ViewMatchers.isRoot; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; -import static de.test.antennapod.NthMatcher.first; import static de.test.antennapod.EspressoTestUtils.waitForView; +import static de.test.antennapod.NthMatcher.first; import static junit.framework.TestCase.assertTrue; +import static org.hamcrest.Matchers.allOf; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; /** * User interface tests for MainActivity drawer @@ -55,49 +54,24 @@ import static org.junit.Assert.fail; @RunWith(AndroidJUnit4.class) public class NavigationDrawerTest { - private Solo solo; private UITestUtils uiTestUtils; - private SharedPreferences prefs; @Rule - public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false); + public IntentsTestRule<MainActivity> mActivityRule = new IntentsTestRule<>(MainActivity.class, false, false); @Before public void setUp() throws IOException { - // override first launch preference - // do this BEFORE calling getActivity()! - EspressoTestUtils.clearAppData(); - prefs = InstrumentationRegistry.getContext() - .getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE); - prefs.edit().putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false).commit(); - - mActivityRule.launchActivity(new Intent()); - - Intents.init(); - Context context = mActivityRule.getActivity(); - uiTestUtils = new UITestUtils(context); + uiTestUtils = new UITestUtils(InstrumentationRegistry.getTargetContext()); uiTestUtils.setup(); - // create new database - PodDBAdapter.init(context); - PodDBAdapter.deleteDatabase(); - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.close(); - - RatingDialog.init(context); - RatingDialog.saveRated(); - - solo = new Solo(getInstrumentation(), mActivityRule.getActivity()); + EspressoTestUtils.clearPreferences(); + EspressoTestUtils.makeNotFirstRun(); + EspressoTestUtils.clearDatabase(); } @After public void tearDown() throws Exception { uiTestUtils.tearDown(); - solo.finishOpenedActivities(); - Intents.release(); - PodDBAdapter.deleteDatabase(); - prefs.edit().clear().commit(); } private void openNavDrawer() { @@ -105,69 +79,66 @@ public class NavigationDrawerTest { onView(withId(R.id.drawer_layout)).perform(DrawerActions.open()); } + private ViewInteraction onDrawerItem(Matcher<View> viewMatcher) { + return onView(allOf(viewMatcher, withId(R.id.txtvTitle))); + } + @Test - @FlakyTest public void testClickNavDrawer() throws Exception { uiTestUtils.addLocalFeedData(false); - - setHiddenDrawerItems(new ArrayList<>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); + mActivityRule.launchActivity(new Intent()); + MainActivity activity = mActivityRule.getActivity(); // queue openNavDrawer(); - solo.clickOnText(solo.getString(R.string.queue_label)); - solo.waitForView(R.id.recyclerView); - assertEquals(solo.getString(R.string.queue_label), getActionbarTitle()); + onDrawerItem(withText(R.string.queue_label)).perform(click()); + onView(isRoot()).perform(waitForView(withId(R.id.recyclerView), 1000)); + assertEquals(activity.getString(R.string.queue_label), activity.getSupportActionBar().getTitle()); // episodes openNavDrawer(); - solo.clickOnText(solo.getString(R.string.episodes_label)); - solo.waitForView(android.R.id.list); - assertEquals(solo.getString(R.string.episodes_label), getActionbarTitle()); + onDrawerItem(withText(R.string.episodes_label)).perform(click()); + onView(isRoot()).perform(waitForView(withId(android.R.id.list), 1000)); + assertEquals(activity.getString(R.string.episodes_label), activity.getSupportActionBar().getTitle()); // Subscriptions openNavDrawer(); - solo.clickOnText(solo.getString(R.string.subscriptions_label)); - solo.waitForView(R.id.subscriptions_grid); - assertEquals(solo.getString(R.string.subscriptions_label), getActionbarTitle()); + onDrawerItem(withText(R.string.subscriptions_label)).perform(click()); + onView(isRoot()).perform(waitForView(withId(R.id.subscriptions_grid), 1000)); + assertEquals(activity.getString(R.string.subscriptions_label), activity.getSupportActionBar().getTitle()); // downloads openNavDrawer(); - solo.clickOnText(solo.getString(R.string.downloads_label)); - solo.waitForView(android.R.id.list); - assertEquals(solo.getString(R.string.downloads_label), getActionbarTitle()); + onDrawerItem(withText(R.string.downloads_label)).perform(click()); + onView(isRoot()).perform(waitForView(withId(android.R.id.list), 1000)); + assertEquals(activity.getString(R.string.downloads_label), activity.getSupportActionBar().getTitle()); // playback history openNavDrawer(); - solo.clickOnText(solo.getString(R.string.playback_history_label)); - solo.waitForView(android.R.id.list); - assertEquals(solo.getString(R.string.playback_history_label), getActionbarTitle()); + onDrawerItem(withText(R.string.playback_history_label)).perform(click()); + onView(isRoot()).perform(waitForView(withId(android.R.id.list), 1000)); + assertEquals(activity.getString(R.string.playback_history_label), activity.getSupportActionBar().getTitle()); // add podcast openNavDrawer(); - solo.clickOnText(solo.getString(R.string.add_feed_label)); - solo.waitForView(R.id.txtvFeedurl); - assertEquals(solo.getString(R.string.add_feed_label), getActionbarTitle()); + onDrawerItem(withText(R.string.add_feed_label)).perform(click()); + onView(isRoot()).perform(waitForView(withId(R.id.txtvFeedurl), 1000)); + assertEquals(activity.getString(R.string.add_feed_label), activity.getSupportActionBar().getTitle()); // podcasts - ListView list = (ListView) solo.getView(R.id.nav_list); for (int i = 0; i < uiTestUtils.hostedFeeds.size(); i++) { Feed f = uiTestUtils.hostedFeeds.get(i); openNavDrawer(); - solo.scrollListToLine(list, i); - solo.clickOnText(f.getTitle()); - solo.waitForView(android.R.id.list); - assertEquals("", getActionbarTitle()); + onDrawerItem(withText(f.getTitle())).perform(scrollTo(), click()); + onView(isRoot()).perform(waitForView(withId(android.R.id.list), 1000)); + assertEquals("", activity.getSupportActionBar().getTitle()); } } - private String getActionbarTitle() { - return ((MainActivity) solo.getCurrentActivity()).getSupportActionBar().getTitle().toString(); - } - - @Test - @FlakyTest public void testGoToPreferences() { + mActivityRule.launchActivity(new Intent()); openNavDrawer(); onView(withText(R.string.settings_label)).perform(click()); intended(hasComponent(PreferenceActivity.class.getName())); @@ -175,9 +146,10 @@ public class NavigationDrawerTest { @Test public void testDrawerPreferencesHideSomeElements() { - setHiddenDrawerItems(new ArrayList<>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); + mActivityRule.launchActivity(new Intent()); openNavDrawer(); - onView(first(withText(R.string.queue_label))).perform(longClick()); + onDrawerItem(withText(R.string.queue_label)).perform(longClick()); onView(withText(R.string.episodes_label)).perform(click()); onView(withText(R.string.playback_history_label)).perform(click()); onView(withText(R.string.confirm_label)).perform(click()); @@ -191,7 +163,8 @@ public class NavigationDrawerTest { @Test public void testDrawerPreferencesUnhideSomeElements() { List<String> hidden = Arrays.asList(PlaybackHistoryFragment.TAG, DownloadsFragment.TAG); - setHiddenDrawerItems(hidden); + UserPreferences.setHiddenDrawerItems(hidden); + mActivityRule.launchActivity(new Intent()); openNavDrawer(); onView(first(withText(R.string.queue_label))).perform(longClick()); @@ -208,7 +181,8 @@ public class NavigationDrawerTest { @Test public void testDrawerPreferencesHideAllElements() { - setHiddenDrawerItems(new ArrayList<>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); + mActivityRule.launchActivity(new Intent()); String[] titles = mActivityRule.getActivity().getResources().getStringArray(R.array.nav_drawer_titles); openNavDrawer(); @@ -227,7 +201,8 @@ public class NavigationDrawerTest { @Test public void testDrawerPreferencesHideCurrentElement() { - setHiddenDrawerItems(new ArrayList<>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); + mActivityRule.launchActivity(new Intent()); openNavDrawer(); onView(withText(R.string.downloads_label)).perform(click()); openNavDrawer(); @@ -240,14 +215,4 @@ public class NavigationDrawerTest { assertEquals(1, hidden.size()); assertTrue(hidden.contains(DownloadsFragment.TAG)); } - - private void setHiddenDrawerItems(List<String> items) { - UserPreferences.setHiddenDrawerItems(items); - try { - mActivityRule.runOnUiThread(() -> mActivityRule.getActivity().updateNavDrawer()); - } catch (Throwable throwable) { - throwable.printStackTrace(); - fail(); - } - } } diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java index 6b41ad0ea..22959917d 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java @@ -52,12 +52,11 @@ public class PlaybackSonicTest { @Before public void setUp() throws Exception { - EspressoTestUtils.clearAppData(); + EspressoTestUtils.clearPreferences(); + EspressoTestUtils.makeNotFirstRun(); + EspressoTestUtils.clearDatabase(); context = InstrumentationRegistry.getTargetContext(); - PodDBAdapter.init(context); - PodDBAdapter.deleteDatabase(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit() .clear() @@ -71,11 +70,6 @@ public class PlaybackSonicTest { uiTestUtils = new UITestUtils(context); uiTestUtils.setup(); - - // create database - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.close(); } @After @@ -122,7 +116,7 @@ public class PlaybackSonicTest { solo.clickOnText(solo.getString(R.string.all_episodes_short_label)); getInstrumentation().waitForIdleSync(); - final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10); + final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(0, 10); assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); solo.clickOnView(solo.getView(R.id.butSecondaryAction)); @@ -241,7 +235,7 @@ public class PlaybackSonicTest { setContinuousPlaybackPreference(followQueue); uiTestUtils.addLocalFeedData(true); DBWriter.clearQueue().get(); - final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10); + final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(0, 10); startLocalPlayback(); long mediaId = episodes.get(0).getMedia().getId(); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java index 099549a69..b302bcc91 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java @@ -114,7 +114,7 @@ public class PlaybackTest { solo.waitForText(solo.getString(R.string.all_episodes_short_label)); solo.clickOnText(solo.getString(R.string.all_episodes_short_label)); - final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10); + final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(0, 10); assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); solo.clickOnView(solo.getView(R.id.butSecondaryAction)); @@ -231,7 +231,7 @@ public class PlaybackTest { setContinuousPlaybackPreference(followQueue); uiTestUtils.addLocalFeedData(true); DBWriter.clearQueue().get(); - final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10); + final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(0, 10); startLocalPlayback(); long mediaId = episodes.get(0).getMedia().getId(); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java index 4b2dc75a9..1063ac90a 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -49,7 +49,7 @@ public class PreferencesTest { @Before public void setUp() { - EspressoTestUtils.clearAppData(); + EspressoTestUtils.clearPreferences(); mActivityRule.launchActivity(new Intent()); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivityRule.getActivity()); prefs.edit().putBoolean(UserPreferences.PREF_ENABLE_AUTODL, true).commit(); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java b/app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java new file mode 100644 index 000000000..d1023dd9e --- /dev/null +++ b/app/src/androidTest/java/de/test/antennapod/ui/QueueFragmentTest.java @@ -0,0 +1,58 @@ +package de.test.antennapod.ui; + +import android.content.Intent; +import android.support.test.espresso.Espresso; +import android.support.test.espresso.intent.rule.IntentsTestRule; +import android.support.test.runner.AndroidJUnit4; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.MainActivity; +import de.danoeh.antennapod.fragment.QueueFragment; +import de.test.antennapod.EspressoTestUtils; +import org.junit.Before; +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.matcher.ViewMatchers.withContentDescription; +import static android.support.test.espresso.matcher.ViewMatchers.withText; + +/** + * User interface tests for queue fragment + */ +@RunWith(AndroidJUnit4.class) +public class QueueFragmentTest { + + @Rule + public IntentsTestRule<MainActivity> mActivityRule = new IntentsTestRule<>(MainActivity.class, false, false); + + @Before + public void setUp() { + EspressoTestUtils.clearPreferences(); + EspressoTestUtils.makeNotFirstRun(); + EspressoTestUtils.clearDatabase(); + EspressoTestUtils.setLastNavFragment(QueueFragment.TAG); + mActivityRule.launchActivity(new Intent()); + } + + @Test + public void testLockEmptyQueue() { + onView(withContentDescription(R.string.lock_queue)).perform(click()); + onView(withContentDescription(R.string.unlock_queue)).perform(click()); + } + + @Test + public void testSortEmptyQueue() { + Espresso.openContextualActionModeOverflowMenu(); + onView(withText(R.string.sort)).perform(click()); + onView(withText(R.string.random)).perform(click()); + } + + @Test + public void testKeepEmptyQueueSorted() { + Espresso.openContextualActionModeOverflowMenu(); + onView(withText(R.string.sort)).perform(click()); + onView(withText(R.string.keep_sorted)).perform(click()); + } +} diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index 20c54cb15..905c65c34 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -59,7 +59,7 @@ class UITestUtils { public void setup() throws IOException { destDir = new File(context.getFilesDir(), "test/UITestUtils"); - destDir.mkdir(); + destDir.mkdirs(); hostedFeedDir = new File(destDir, "hostedFeeds"); hostedFeedDir.mkdir(); hostedMediaDir = new File(destDir, "hostedMediaDir"); diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java index 3d8417bf6..4158fd31c 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java +++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java @@ -72,20 +72,6 @@ public class HTTPBin extends NanoHTTPD { return servedFiles.size() - 1; } - /** - * Removes the file with the given ID from the server. - * - * @return True if a file was removed, false otherwise - */ - public synchronized boolean removeFile(int id) { - if (id < 0) throw new IllegalArgumentException("ID < 0"); - if (id >= servedFiles.size()) { - return false; - } else { - return servedFiles.remove(id) != null; - } - } - public synchronized File accessFile(int id) { if (id < 0 || id >= servedFiles.size()) { return null; |