From f5812fe894b435942f841ac5a43afdc5ff98a6c5 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Fri, 10 Apr 2015 11:02:14 +0200 Subject: Some working, some not --- .../de/test/antennapod/ui/MainActivityTest.java | 3 + .../java/de/test/antennapod/ui/PlaybackTest.java | 117 ++++-- .../de/test/antennapod/ui/PreferencesTest.java | 451 +++++++++++++++++++++ .../java/de/test/antennapod/ui/UITestUtils.java | 9 +- 4 files changed, 541 insertions(+), 39 deletions(-) create mode 100644 app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java (limited to 'app/src/androidTest') 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 470866c3c..0326174e3 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java @@ -3,6 +3,7 @@ package de.test.antennapod.ui; import android.content.Context; import android.content.SharedPreferences; import android.test.ActivityInstrumentationTestCase2; +import android.test.FlakyTest; import android.widget.ListView; import com.robotium.solo.Solo; @@ -85,6 +86,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2 private Solo solo; private UITestUtils uiTestUtils; + private Context context; + public PlaybackTest() { super(MainActivity.class); } @@ -36,28 +39,33 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2 public void setUp() throws Exception { super.setUp(); solo = new Solo(getInstrumentation(), getActivity()); - uiTestUtils = new UITestUtils(getInstrumentation().getTargetContext()); + context = getInstrumentation().getContext(); + + uiTestUtils = new UITestUtils(context); uiTestUtils.setup(); + // create database - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + PodDBAdapter adapter = new PodDBAdapter(context); adapter.open(); adapter.close(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getInstrumentation().getTargetContext()); - prefs.edit().putBoolean(UserPreferences.PREF_UNPAUSE_ON_HEADSET_RECONNECT, false).commit(); - prefs.edit().putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false).commit(); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + prefs.edit() + .putBoolean(UserPreferences.PREF_UNPAUSE_ON_HEADSET_RECONNECT, false) + .putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false) + .putString(UserPreferences.PREF_HIDDEN_DRAWER_ITEMS, "") + .commit(); } @Override public void tearDown() throws Exception { uiTestUtils.tearDown(); solo.finishOpenedActivities(); - PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext()); + PodDBAdapter.deleteDatabase(context); // shut down playback service skipEpisode(); - getInstrumentation().getTargetContext().sendBroadcast( - new Intent(PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE)); + context.sendBroadcast(new Intent(PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE)); super.tearDown(); } @@ -67,70 +75,97 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2 } private void setContinuousPlaybackPreference(boolean value) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getInstrumentation().getTargetContext()); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putBoolean(UserPreferences.PREF_FOLLOW_QUEUE, value).commit(); } private void skipEpisode() { Intent skipIntent = new Intent(PlaybackService.ACTION_SKIP_CURRENT_EPISODE); - getInstrumentation().getTargetContext().sendBroadcast(skipIntent); + context.sendBroadcast(skipIntent); } private void startLocalPlayback() { - assertTrue(solo.waitForActivity(MainActivity.class)); openNavDrawer(); + solo.clickOnText(solo.getString(R.string.all_episodes_label)); - solo.waitForView(android.R.id.list); + final List episodes = DBReader.getRecentlyPublishedEpisodes(context, 10); + assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); + solo.clickOnView(solo.getView(R.id.butSecondaryAction)); - assertTrue(solo.waitForActivity(AudioplayerActivity.class)); assertTrue(solo.waitForView(solo.getView(R.id.butPlay))); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return episodes.get(0).getMedia().isCurrentlyPlaying(); + } + }, Timeout.getLargeTimeout()); } private void startLocalPlaybackFromQueue() { - assertTrue(solo.waitForActivity(MainActivity.class)); - openNavDrawer(); - solo.clickOnText(solo.getString(R.string.queue_label)); assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); + final List queue = DBReader.getQueue(context); solo.clickOnImageButton(1); - assertTrue(solo.waitForActivity(AudioplayerActivity.class)); assertTrue(solo.waitForView(solo.getView(R.id.butPlay))); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return queue.get(0).getMedia().isCurrentlyPlaying(); + } + }, Timeout.getLargeTimeout()); } public void testStartLocal() throws Exception { uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(getInstrumentation().getTargetContext()).get(); + DBWriter.clearQueue(context).get(); startLocalPlayback(); - - solo.clickOnView(solo.getView(R.id.butPlay)); } public void testContinousPlaybackOffSingleEpisode() throws Exception { setContinuousPlaybackPreference(false); uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(getInstrumentation().getTargetContext()).get(); + DBWriter.clearQueue(context).get(); startLocalPlayback(); - assertTrue(solo.waitForActivity(MainActivity.class)); } public void testContinousPlaybackOffMultipleEpisodes() throws Exception { setContinuousPlaybackPreference(false); uiTestUtils.addLocalFeedData(true); - List queue = DBReader.getQueue(getInstrumentation().getTargetContext()); - FeedItem second = queue.get(0); + List queue = DBReader.getQueue(context); + final FeedItem first = queue.get(0); + final FeedItem second = queue.get(1); startLocalPlaybackFromQueue(); - assertTrue(solo.waitForText(second.getTitle())); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return first.getMedia().isCurrentlyPlaying() == false; + } + }, 10000); + Thread.sleep(1000); + assertTrue(second.getMedia().isCurrentlyPlaying() == false); } public void testContinuousPlaybackOnMultipleEpisodes() throws Exception { setContinuousPlaybackPreference(true); uiTestUtils.addLocalFeedData(true); - List queue = DBReader.getQueue(getInstrumentation().getTargetContext()); - FeedItem second = queue.get(1); + List queue = DBReader.getQueue(context); + final FeedItem first = queue.get(0); + final FeedItem second = queue.get(1); startLocalPlaybackFromQueue(); - assertTrue(solo.waitForText(second.getTitle())); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return first.getMedia().isCurrentlyPlaying() == false; + } + }, 10000); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return second.getMedia().isCurrentlyPlaying() == true; + } + }, 10000); } /** @@ -139,14 +174,24 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2 private void replayEpisodeCheck(boolean followQueue) throws Exception { setContinuousPlaybackPreference(followQueue); uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(getInstrumentation().getTargetContext()).get(); - String title = ((TextView) solo.getView(R.id.txtvTitle)).getText().toString(); + DBWriter.clearQueue(context).get(); + final List episodes = DBReader.getRecentlyPublishedEpisodes(context, 10); + startLocalPlayback(); - assertTrue(solo.waitForText(title)); - assertTrue(solo.waitForActivity(MainActivity.class)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return false == episodes.get(0).getMedia().isCurrentlyPlaying(); + } + }, Timeout.getLargeTimeout()); + startLocalPlayback(); - assertTrue(solo.waitForText(title)); - assertTrue(solo.waitForActivity(MainActivity.class)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return false == episodes.get(0).getMedia().isCurrentlyPlaying(); + } + }, Timeout.getLargeTimeout()); } public void testReplayEpisodeContinuousPlaybackOn() throws Exception { diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java new file mode 100644 index 000000000..c5fece496 --- /dev/null +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -0,0 +1,451 @@ +package de.test.antennapod.ui; + +import android.content.Context; +import android.content.res.Resources; +import android.test.ActivityInstrumentationTestCase2; + +import com.robotium.solo.Condition; +import com.robotium.solo.Solo; +import com.robotium.solo.Timeout; + +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.PreferenceActivity; +import de.danoeh.antennapod.core.preferences.UserPreferences; + +public class PreferencesTest extends ActivityInstrumentationTestCase2 { + + private static final String TAG = "PreferencesTest"; + + private Solo solo; + private Context context; + private Resources res; + + public PreferencesTest() { + super(PreferenceActivity.class); + } + + @Override + public void setUp() throws Exception { + super.setUp(); + solo = new Solo(getInstrumentation(), getActivity()); + Timeout.setSmallTimeout(500); + Timeout.setLargeTimeout(1000); + context = getInstrumentation().getTargetContext(); + res = getActivity().getResources(); + UserPreferences.createInstance(context); + } + + @Override + public void tearDown() throws Exception { + solo.finishOpenedActivities(); + super.tearDown(); + } + + public void testSwitchTheme() { + final int theme = UserPreferences.getTheme(); + int otherTheme; + if(theme == de.danoeh.antennapod.core.R.style.Theme_AntennaPod_Light) { + otherTheme = R.string.pref_theme_title_dark; + } else { + otherTheme = R.string.pref_theme_title_light; + } + solo.clickOnText(solo.getString(R.string.pref_set_theme_title)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(otherTheme)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getTheme() != theme; + } + }, Timeout.getLargeTimeout()); + } + + public void testSwitchThemeBack() { + final int theme = UserPreferences.getTheme(); + int otherTheme; + if(theme == de.danoeh.antennapod.core.R.style.Theme_AntennaPod_Light) { + otherTheme = R.string.pref_theme_title_dark; + } else { + otherTheme = R.string.pref_theme_title_light; + } + solo.clickOnText(solo.getString(R.string.pref_set_theme_title)); + solo.waitForDialogToOpen(1000); + solo.clickOnText(solo.getString(otherTheme)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getTheme() != theme; + } + }, Timeout.getLargeTimeout()); + } + + public void testExpandNotification() { + final int priority = UserPreferences.getNotifyPriority(); + solo.clickOnText(solo.getString(R.string.pref_expandNotify_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return priority != UserPreferences.getNotifyPriority(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_expandNotify_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return priority == UserPreferences.getNotifyPriority(); + } + }, Timeout.getLargeTimeout()); + } + + public void testEnablePersistentPlaybackControls() { + final boolean persistNotify = UserPreferences.isPersistNotify(); + solo.clickOnText(solo.getString(R.string.pref_persistNotify_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return persistNotify != UserPreferences.isPersistNotify(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_persistNotify_title)); + solo.waitForCondition(new Condition() { + @Override public boolean isSatisfied() { + return persistNotify == UserPreferences.isPersistNotify(); + } + }, Timeout.getLargeTimeout()); + } + + public void testEnqueueAtFront() { + final boolean enqueueAtFront = UserPreferences.enqueueAtFront(); + solo.clickOnText(solo.getString(R.string.pref_queueAddToFront_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return enqueueAtFront != UserPreferences.enqueueAtFront(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_queueAddToFront_title)); + solo.waitForCondition(new Condition() { + @Override public boolean isSatisfied() { + return enqueueAtFront == UserPreferences.enqueueAtFront(); + } + }, Timeout.getLargeTimeout()); + } + + public void testHeadPhonesDisconnect() { + final boolean pauseOnHeadsetDisconnect = UserPreferences.isPauseOnHeadsetDisconnect(); + solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); + solo.waitForCondition(new Condition() { + @Override public boolean isSatisfied() { + return pauseOnHeadsetDisconnect != UserPreferences.isPauseOnHeadsetDisconnect(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); + solo.waitForCondition(new Condition() { + @Override public boolean isSatisfied() { + return pauseOnHeadsetDisconnect == UserPreferences.isPauseOnHeadsetDisconnect(); + } + }, Timeout.getLargeTimeout()); + } + + public void testHeadPhonesReconnect() { + if(UserPreferences.isPauseOnHeadsetDisconnect() == false) { + solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.isPauseOnHeadsetDisconnect(); + } + }, Timeout.getLargeTimeout()); + } + final boolean unpauseOnHeadsetReconnect = UserPreferences.isUnpauseOnHeadsetReconnect(); + solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return unpauseOnHeadsetReconnect != UserPreferences.isUnpauseOnHeadsetReconnect(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title)); + solo.waitForCondition(new Condition() { + @Override public boolean isSatisfied() { + return unpauseOnHeadsetReconnect == UserPreferences.isUnpauseOnHeadsetReconnect(); + } + }, Timeout.getLargeTimeout()); + } + + public void testContinuousPlayback() { + final boolean continuousPlayback = UserPreferences.isFollowQueue(); + solo.clickOnText(solo.getString(R.string.pref_followQueue_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return continuousPlayback != UserPreferences.isFollowQueue(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_followQueue_title)); + solo.waitForCondition(new Condition() { + @Override public boolean isSatisfied() { + return continuousPlayback == UserPreferences.isFollowQueue(); + } + }, Timeout.getLargeTimeout()); + } + + public void testAutoDelete() { + final boolean autoDelete = UserPreferences.isAutoDelete(); + solo.clickOnText(solo.getString(R.string.pref_auto_delete_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return autoDelete != UserPreferences.isAutoDelete(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_auto_delete_title)); + solo.waitForCondition(new Condition() { + @Override public boolean isSatisfied() { + return autoDelete == UserPreferences.isAutoDelete(); + } + }, Timeout.getLargeTimeout()); + } + + public void testPlaybackSpeeds() { + solo.clickOnText(solo.getString(R.string.pref_playback_speed_title)); + solo.waitForDialogToOpen(1000); + assertTrue(solo.searchText(solo.getString(R.string.no_playback_plugin_title))); + solo.clickOnText(solo.getString(R.string.close_label)); + solo.waitForDialogToClose(1000); + } + + public void testPauseForInterruptions() { + final boolean pauseForFocusLoss = UserPreferences.shouldPauseForFocusLoss(); + solo.clickOnText(solo.getString(R.string.pref_pausePlaybackForFocusLoss_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return pauseForFocusLoss != UserPreferences.shouldPauseForFocusLoss(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_auto_delete_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return pauseForFocusLoss == UserPreferences.shouldPauseForFocusLoss(); + } + }, Timeout.getLargeTimeout()); + } + + public void testDisableUpdateInterval() { + solo.clickOnText(solo.getString(R.string.pref_autoUpdateIntervall_title)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.pref_update_interval_hours_manual)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getUpdateInterval() == 0; + } + }, 1000); + } + + public void testSetUpdateInterval() { + solo.clickOnText(solo.getString(R.string.pref_autoUpdateIntervall_title)); + solo.waitForDialogToOpen(); + String search = "12 " + solo.getString(R.string.pref_update_interval_hours_plural); + solo.clickOnText(search); + solo.waitForDialogToClose(); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getUpdateInterval() == 12; + } + }, Timeout.getLargeTimeout()); + } + + public void testMobileUpdates() { + final boolean mobileUpdates = UserPreferences.isAllowMobileUpdate(); + solo.clickOnText(solo.getString(R.string.pref_mobileUpdate_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return mobileUpdates != UserPreferences.isAllowMobileUpdate(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_mobileUpdate_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return mobileUpdates == UserPreferences.isAllowMobileUpdate(); + } + }, Timeout.getLargeTimeout()); + } + + public void testSetSequentialDownload() { + solo.clickOnText(solo.getString(R.string.pref_parallel_downloads_title)); + solo.waitForDialogToOpen(); + solo.clearEditText(0); + solo.enterText(0, "1"); + solo.clickOnText(solo.getString(android.R.string.ok)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getParallelDownloads() == 1; + } + }, Timeout.getLargeTimeout()); + } + + public void testSetParallelDownloads() { + solo.clickOnText(solo.getString(R.string.pref_parallel_downloads_title)); + solo.waitForDialogToOpen(); + solo.clearEditText(0); + solo.enterText(0, "10"); + solo.clickOnText(solo.getString(android.R.string.ok)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getParallelDownloads() == 10; + } + }, Timeout.getLargeTimeout()); + } + + public void testSetParallelDownloadsInvalidInput() { + solo.clickOnText(solo.getString(R.string.pref_parallel_downloads_title)); + solo.waitForDialogToOpen(); + solo.clearEditText(0); + solo.enterText(0, "0"); + assertEquals("1", solo.getEditText(0).getText().toString()); + solo.clearEditText(0); + solo.enterText(0, "100"); + assertEquals("50", solo.getEditText(0).getText().toString()); + } + + public void testSetEpisodeCache() { + String[] entries = res.getStringArray(R.array.episode_cache_size_entries); + String[] values = res.getStringArray(R.array.episode_cache_size_values); + String entry = entries[entries.length/2]; + final int value = Integer.valueOf(values[values.length/2]); + solo.clickOnText(solo.getString(R.string.pref_episode_cache_title)); + solo.waitForDialogToOpen(); + solo.clickOnText(entry); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getEpisodeCacheSize() == value; + } + }, Timeout.getLargeTimeout()); + } + + public void testSetEpisodeCacheMin() { + String[] entries = res.getStringArray(R.array.episode_cache_size_entries); + String[] values = res.getStringArray(R.array.episode_cache_size_values); + String minEntry = entries[0]; + final int minValue = Integer.valueOf(values[0]); + solo.clickOnText(solo.getString(R.string.pref_episode_cache_title)); + solo.waitForDialogToOpen(1000); + solo.scrollUp(); + solo.clickOnText(minEntry); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getEpisodeCacheSize() == minValue; + } + }, Timeout.getLargeTimeout()); + } + + + public void testSetEpisodeCacheMax() { + String[] entries = res.getStringArray(R.array.episode_cache_size_entries); + String[] values = res.getStringArray(R.array.episode_cache_size_values); + String maxEntry = entries[entries.length-1]; + final int maxValue = Integer.valueOf(values[values.length-1]); + solo.clickOnText(solo.getString(R.string.pref_episode_cache_title)); + solo.waitForDialogToOpen(); + solo.clickOnText(maxEntry); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.getEpisodeCacheSize() == maxValue; + } + }, Timeout.getLargeTimeout()); + } + + public void testAutomaticDownload() { + final boolean automaticDownload = UserPreferences.isEnableAutodownload(); + solo.clickOnText(solo.getString(R.string.pref_automatic_download_title)); + solo.waitForText(solo.getString(R.string.pref_automatic_download_title)); + solo.clickOnText(solo.getString(R.string.pref_automatic_download_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return automaticDownload != UserPreferences.isEnableAutodownload(); + } + }, Timeout.getLargeTimeout()); + if(UserPreferences.isEnableAutodownload() == false) { + solo.clickOnText(solo.getString(R.string.pref_automatic_download_title)); + } + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return UserPreferences.isEnableAutodownload() == true; + } + }, Timeout.getLargeTimeout()); + final boolean enableAutodownloadOnBattery = UserPreferences.isEnableAutodownloadOnBattery(); + solo.clickOnText(solo.getString(R.string.pref_automatic_download_on_battery_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return enableAutodownloadOnBattery != UserPreferences.isEnableAutodownloadOnBattery(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_automatic_download_on_battery_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return enableAutodownloadOnBattery == UserPreferences.isEnableAutodownloadOnBattery(); + } + }, Timeout.getLargeTimeout()); + final boolean enableWifiFilter = UserPreferences.isEnableAutodownloadWifiFilter(); + solo.clickOnText(solo.getString(R.string.pref_autodl_wifi_filter_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return enableWifiFilter != UserPreferences.isEnableAutodownloadWifiFilter(); + } + }, Timeout.getLargeTimeout()); + solo.clickOnText(solo.getString(R.string.pref_automatic_download_on_battery_title)); + solo.waitForCondition(new Condition() { + @Override + public boolean isSatisfied() { + return enableWifiFilter == UserPreferences.isEnableAutodownloadWifiFilter(); + } + }, Timeout.getLargeTimeout()); + } + + public void testAbout() throws IOException { + int numViews = 0, numLinks = 0; + InputStream input = getActivity().getResources().getAssets().open("about.html"); + List lines = IOUtils.readLines(input); + input.close(); + for(String line : lines) { + if(line.contains("(View)")) { + numViews++; + } else if(line.contains("(Link)")) { + numLinks++; + } + } + for(int i=0; i < numViews; i++) { + solo.clickOnText(solo.getString(R.string.about_pref)); + solo.clickOnText("(View)", i); + solo.goBack(); + } + for(int i=0; i < numLinks; i++) { + solo.clickOnText(solo.getString(R.string.about_pref)); + solo.clickOnText("(Link)", i); + solo.goBack(); + } + } + +} 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 85923d40f..613826932 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -141,11 +141,12 @@ public class UITestUtils { // create items List items = new ArrayList(); for (int j = 0; j < NUM_ITEMS_PER_FEED; j++) { - FeedItem item = new FeedItem(0, "item" + j, "item" + j, "http://example.com/feed" + i + "/item/" + j, new Date(), true, feed); + FeedItem item = new FeedItem(j, "Feed " + (i+1) + ": Item " + (j+1), "item" + j, + "http://example.com/feed" + i + "/item/" + j, new Date(), false, feed); items.add(item); File mediaFile = newMediaFile("feed-" + i + "-episode-" + j + ".mp3"); - item.setMedia(new FeedMedia(0, item, 0, 0, mediaFile.length(), "audio/mp3", null, hostFile(mediaFile), false, null, 0)); + item.setMedia(new FeedMedia(j, item, 0, 0, mediaFile.length(), "audio/mp3", null, hostFile(mediaFile), false, null, 0)); } feed.setItems(items); @@ -169,7 +170,9 @@ public class UITestUtils { * @param downloadEpisodes true if episodes should also be marked as downloaded. */ public void addLocalFeedData(boolean downloadEpisodes) throws Exception { - if (localFeedDataAdded) throw new IllegalStateException("addLocalFeedData was called twice on the same instance"); + if (localFeedDataAdded) { + throw new IllegalStateException("addLocalFeedData was called twice on the same instance"); + } if (!feedDataHosted) { addHostedFeedData(); } -- cgit v1.2.3