diff options
author | H. Lehmann <ByteHamster@users.noreply.github.com> | 2019-08-11 21:33:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-11 21:33:27 +0200 |
commit | 0680dfb0476b2c7ebd89ca30819a618291a252ad (patch) | |
tree | eb8de76f4a7f6b12d94ef50ceec5f112a2ee7232 /app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java | |
parent | ffe98e2225e7a0bd0169abc1cbf902db16fb278c (diff) | |
parent | c29b0ce8c760b75b4c61781acaf56542530ca3cc (diff) | |
download | AntennaPod-0680dfb0476b2c7ebd89ca30819a618291a252ad.zip |
Merge pull request #3317 from ByteHamster/tests
Tests
Diffstat (limited to 'app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java')
-rw-r--r-- | app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java | 294 |
1 files changed, 129 insertions, 165 deletions
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 d934bf3e2..4b2dc75a9 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -1,22 +1,19 @@ package de.test.antennapod.ui; +import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.preference.PreferenceManager; -import android.support.test.espresso.contrib.RecyclerViewActions; -import android.support.test.rule.ActivityTestRule; -import android.support.test.runner.AndroidJUnit4; -import android.view.View; +import android.support.test.filters.LargeTest; +import android.support.test.rule.ActivityTestRule; import com.robotium.solo.Solo; import com.robotium.solo.Timeout; -import org.hamcrest.Matcher; -import org.junit.After; +import de.test.antennapod.EspressoTestUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; import java.util.Arrays; import java.util.concurrent.TimeUnit; @@ -35,38 +32,33 @@ import de.danoeh.antennapod.fragment.SubscriptionFragment; 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.matcher.ViewMatchers.hasDescendant; -import static android.support.test.espresso.matcher.ViewMatchers.withId; +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.withText; +import static de.test.antennapod.EspressoTestUtils.clickPreference; import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertTrue; -@RunWith(AndroidJUnit4.class) +@LargeTest public class PreferencesTest { private Solo solo; private Resources res; - private SharedPreferences prefs; @Rule - public ActivityTestRule<PreferenceActivity> mActivityRule = new ActivityTestRule<>(PreferenceActivity.class); + public ActivityTestRule<PreferenceActivity> mActivityRule = new ActivityTestRule<>(PreferenceActivity.class, false, false); @Before public void setUp() { + EspressoTestUtils.clearAppData(); + mActivityRule.launchActivity(new Intent()); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivityRule.getActivity()); + prefs.edit().putBoolean(UserPreferences.PREF_ENABLE_AUTODL, true).commit(); + solo = new Solo(getInstrumentation(), mActivityRule.getActivity()); Timeout.setSmallTimeout(500); Timeout.setLargeTimeout(1000); res = mActivityRule.getActivity().getResources(); UserPreferences.init(mActivityRule.getActivity()); - - prefs = PreferenceManager.getDefaultSharedPreferences(mActivityRule.getActivity()); - prefs.edit().clear(); - prefs.edit().putBoolean(UserPreferences.PREF_ENABLE_AUTODL, true).commit(); - } - - @After - public void tearDown() { - solo.finishOpenedActivities(); - prefs.edit().clear(); } @Test @@ -78,8 +70,8 @@ public class PreferencesTest { } else { otherTheme = R.string.pref_theme_title_light; } - clickPreference(withText(R.string.user_interface_label)); - clickPreference(withText(R.string.pref_set_theme_title)); + clickPreference(R.string.user_interface_label); + clickPreference(R.string.pref_set_theme_title); onView(withText(otherTheme)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getTheme() != theme, Timeout.getLargeTimeout())); } @@ -93,8 +85,8 @@ public class PreferencesTest { } else { otherTheme = R.string.pref_theme_title_light; } - clickPreference(withText(R.string.user_interface_label)); - clickPreference(withText(R.string.pref_set_theme_title)); + clickPreference(R.string.user_interface_label); + clickPreference(R.string.pref_set_theme_title); onView(withText(otherTheme)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getTheme() != theme, Timeout.getLargeTimeout())); } @@ -102,34 +94,31 @@ public class PreferencesTest { @Test public void testEnablePersistentPlaybackControls() { final boolean persistNotify = UserPreferences.isPersistNotify(); - clickPreference(withText(R.string.user_interface_label)); - clickPreference(withText(R.string.pref_persistNotify_title)); + clickPreference(R.string.user_interface_label); + clickPreference(R.string.pref_persistNotify_title); assertTrue(solo.waitForCondition(() -> persistNotify != UserPreferences.isPersistNotify(), Timeout.getLargeTimeout())); - clickPreference(withText(R.string.pref_persistNotify_title)); + clickPreference(R.string.pref_persistNotify_title); assertTrue(solo.waitForCondition(() -> persistNotify == UserPreferences.isPersistNotify(), Timeout.getLargeTimeout())); } @Test public void testSetLockscreenButtons() { - solo.clickOnText(solo.getString(R.string.user_interface_label)); + onView(withText(R.string.user_interface_label)).perform(click()); solo.scrollDown(); String[] buttons = res.getStringArray(R.array.compact_notification_buttons_options); - solo.clickOnText(solo.getString(R.string.pref_compact_notification_buttons_title)); + onView(withText(R.string.pref_compact_notification_buttons_title)).perform(click()); solo.waitForDialogToOpen(1000); - // First uncheck every checkbox - for (String button : buttons) { - assertTrue(solo.searchText(button)); - if (solo.isTextChecked(button)) { - solo.clickOnText(button); - } - } + // First uncheck checkbox + onView(withText(buttons[2])).perform(click()); + // Now try to check all checkboxes - solo.clickOnText(buttons[0]); - solo.clickOnText(buttons[1]); - solo.clickOnText(buttons[2]); + onView(withText(buttons[0])).perform(click()); + onView(withText(buttons[1])).perform(click()); + onView(withText(buttons[2])).perform(click()); + // Make sure that the third checkbox is unchecked assertTrue(!solo.isTextChecked(buttons[2])); - solo.clickOnText(solo.getString(R.string.confirm_label)); + onView(withText(R.string.confirm_label)).perform(click()); solo.waitForDialogToClose(1000); assertTrue(solo.waitForCondition(UserPreferences::showRewindOnCompactNotification, Timeout.getLargeTimeout())); assertTrue(solo.waitForCondition(UserPreferences::showFastForwardOnCompactNotification, Timeout.getLargeTimeout())); @@ -138,107 +127,109 @@ public class PreferencesTest { @Test public void testEnqueueAtFront() { - solo.clickOnText(solo.getString(R.string.playback_pref)); + onView(withText(R.string.playback_pref)).perform(click()); final boolean enqueueAtFront = UserPreferences.enqueueAtFront(); solo.scrollDown(); solo.scrollDown(); - solo.clickOnText(solo.getString(R.string.pref_queueAddToFront_title)); + onView(withText(R.string.pref_queueAddToFront_title)).perform(click()); assertTrue(solo.waitForCondition(() -> enqueueAtFront != UserPreferences.enqueueAtFront(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_queueAddToFront_title)); + onView(withText(R.string.pref_queueAddToFront_title)).perform(click()); assertTrue(solo.waitForCondition(() -> enqueueAtFront == UserPreferences.enqueueAtFront(), Timeout.getLargeTimeout())); } @Test public void testHeadPhonesDisconnect() { - solo.clickOnText(solo.getString(R.string.playback_pref)); + onView(withText(R.string.playback_pref)).perform(click()); final boolean pauseOnHeadsetDisconnect = UserPreferences.isPauseOnHeadsetDisconnect(); - solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); + onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click()); assertTrue(solo.waitForCondition(() -> pauseOnHeadsetDisconnect != UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); + onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click()); assertTrue(solo.waitForCondition(() -> pauseOnHeadsetDisconnect == UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout())); } @Test public void testHeadPhonesReconnect() { - solo.clickOnText(solo.getString(R.string.playback_pref)); + onView(withText(R.string.playback_pref)).perform(click()); if(UserPreferences.isPauseOnHeadsetDisconnect() == false) { - solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); + onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click()); assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout())); } final boolean unpauseOnHeadsetReconnect = UserPreferences.isUnpauseOnHeadsetReconnect(); - solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title)); + onView(withText(R.string.pref_unpauseOnHeadsetReconnect_title)).perform(click()); assertTrue(solo.waitForCondition(() -> unpauseOnHeadsetReconnect != UserPreferences.isUnpauseOnHeadsetReconnect(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title)); + onView(withText(R.string.pref_unpauseOnHeadsetReconnect_title)).perform(click()); assertTrue(solo.waitForCondition(() -> unpauseOnHeadsetReconnect == UserPreferences.isUnpauseOnHeadsetReconnect(), Timeout.getLargeTimeout())); } @Test public void testBluetoothReconnect() { - solo.clickOnText(solo.getString(R.string.playback_pref)); + onView(withText(R.string.playback_pref)).perform(click()); if(UserPreferences.isPauseOnHeadsetDisconnect() == false) { - solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); + onView(withText(R.string.pref_pauseOnHeadsetDisconnect_title)).perform(click()); assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout())); } final boolean unpauseOnBluetoothReconnect = UserPreferences.isUnpauseOnBluetoothReconnect(); - solo.clickOnText(solo.getString(R.string.pref_unpauseOnBluetoothReconnect_title)); + onView(withText(R.string.pref_unpauseOnBluetoothReconnect_title)).perform(click()); assertTrue(solo.waitForCondition(() -> unpauseOnBluetoothReconnect != UserPreferences.isUnpauseOnBluetoothReconnect(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_unpauseOnBluetoothReconnect_title)); + onView(withText(R.string.pref_unpauseOnBluetoothReconnect_title)).perform(click()); assertTrue(solo.waitForCondition(() -> unpauseOnBluetoothReconnect == UserPreferences.isUnpauseOnBluetoothReconnect(), Timeout.getLargeTimeout())); } @Test public void testContinuousPlayback() { - solo.clickOnText(solo.getString(R.string.playback_pref)); + onView(withText(R.string.playback_pref)).perform(click()); final boolean continuousPlayback = UserPreferences.isFollowQueue(); solo.scrollDown(); solo.scrollDown(); - solo.clickOnText(solo.getString(R.string.pref_followQueue_title)); + onView(withText(R.string.pref_followQueue_title)).perform(click()); assertTrue(solo.waitForCondition(() -> continuousPlayback != UserPreferences.isFollowQueue(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_followQueue_title)); + onView(withText(R.string.pref_followQueue_title)).perform(click()); assertTrue(solo.waitForCondition(() -> continuousPlayback == UserPreferences.isFollowQueue(), Timeout.getLargeTimeout())); } @Test public void testAutoDelete() { - solo.clickOnText(solo.getString(R.string.storage_pref)); + onView(withText(R.string.storage_pref)).perform(click()); final boolean autoDelete = UserPreferences.isAutoDelete(); - solo.clickOnText(solo.getString(R.string.pref_auto_delete_title)); + onView(withText(R.string.pref_auto_delete_title)).perform(click()); assertTrue(solo.waitForCondition(() -> autoDelete != UserPreferences.isAutoDelete(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_auto_delete_title)); + onView(withText(R.string.pref_auto_delete_title)).perform(click()); assertTrue(solo.waitForCondition(() -> autoDelete == UserPreferences.isAutoDelete(), Timeout.getLargeTimeout())); } @Test public void testPlaybackSpeeds() { - clickPreference(withText(R.string.playback_pref)); - clickPreference(withText(R.string.pref_playback_speed_title)); - assertTrue(solo.searchText(res.getStringArray(R.array.playback_speed_values)[0])); + clickPreference(R.string.playback_pref); + clickPreference(R.string.media_player); + onView(withText(R.string.media_player_exoplayer)).perform(click()); + clickPreference(R.string.pref_playback_speed_title); + solo.waitForDialogToOpen(); + onView(withText("0.50")).check(matches(isDisplayed())); onView(withText(R.string.cancel_label)).perform(click()); } @Test public void testPauseForInterruptions() { - solo.clickOnText(solo.getString(R.string.playback_pref)); + onView(withText(R.string.playback_pref)).perform(click()); final boolean pauseForFocusLoss = UserPreferences.shouldPauseForFocusLoss(); - solo.clickOnText(solo.getString(R.string.pref_pausePlaybackForFocusLoss_title)); + onView(withText(R.string.pref_pausePlaybackForFocusLoss_title)).perform(click()); assertTrue(solo.waitForCondition(() -> pauseForFocusLoss != UserPreferences.shouldPauseForFocusLoss(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_pausePlaybackForFocusLoss_title)); + onView(withText(R.string.pref_pausePlaybackForFocusLoss_title)).perform(click()); assertTrue(solo.waitForCondition(() -> pauseForFocusLoss == UserPreferences.shouldPauseForFocusLoss(), Timeout.getLargeTimeout())); } @Test public void testDisableUpdateInterval() { - solo.clickOnText(solo.getString(R.string.network_pref)); - solo.clickOnText(solo.getString(R.string.pref_autoUpdateIntervallOrTime_sum)); - solo.waitForDialogToOpen(); - solo.clickOnText(solo.getString(R.string.pref_autoUpdateIntervallOrTime_Disable)); + onView(withText(R.string.network_pref)).perform(click()); + onView(withText(R.string.pref_autoUpdateIntervallOrTime_title)).perform(click()); + onView(withText(R.string.pref_autoUpdateIntervallOrTime_Disable)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getUpdateInterval() == 0, 1000)); } @Test public void testSetUpdateInterval() { - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_autoUpdateIntervallOrTime_title)); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_autoUpdateIntervallOrTime_title); onView(withText(R.string.pref_autoUpdateIntervallOrTime_Interval)).perform(click()); String search = "12 " + solo.getString(R.string.pref_update_interval_hours_plural); onView(withText(search)).perform(click()); @@ -247,41 +238,31 @@ public class PreferencesTest { } @Test - public void testMobileUpdates() { - clickPreference(withText(R.string.network_pref)); - final boolean mobileUpdates = UserPreferences.isAllowMobileUpdate(); - clickPreference(withText(R.string.pref_mobileUpdate_title)); - assertTrue(solo.waitForCondition(() -> mobileUpdates != UserPreferences.isAllowMobileUpdate(), Timeout.getLargeTimeout())); - clickPreference(withText(R.string.pref_mobileUpdate_title)); - assertTrue(solo.waitForCondition(() -> mobileUpdates == UserPreferences.isAllowMobileUpdate(), Timeout.getLargeTimeout())); - } - - @Test public void testSetSequentialDownload() { - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_parallel_downloads_title)); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_parallel_downloads_title); solo.waitForDialogToOpen(); solo.clearEditText(0); solo.enterText(0, "1"); - solo.clickOnText(solo.getString(android.R.string.ok)); + onView(withText(android.R.string.ok)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getParallelDownloads() == 1, Timeout.getLargeTimeout())); } @Test public void testSetParallelDownloads() { - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_parallel_downloads_title)); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_parallel_downloads_title); solo.waitForDialogToOpen(); solo.clearEditText(0); solo.enterText(0, "10"); - solo.clickOnText(solo.getString(android.R.string.ok)); + onView(withText(android.R.string.ok)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getParallelDownloads() == 10, Timeout.getLargeTimeout())); } @Test public void testSetParallelDownloadsInvalidInput() { - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_parallel_downloads_title)); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_parallel_downloads_title); solo.waitForDialogToOpen(); solo.clearEditText(0); solo.enterText(0, "0"); @@ -297,9 +278,9 @@ public class PreferencesTest { 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]); - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_automatic_download_title)); - clickPreference(withText(R.string.pref_episode_cache_title)); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_automatic_download_title); + clickPreference(R.string.pref_episode_cache_title); solo.waitForDialogToOpen(); solo.clickOnText(entry); assertTrue(solo.waitForCondition(() -> UserPreferences.getEpisodeCacheSize() == value, Timeout.getLargeTimeout())); @@ -312,12 +293,11 @@ public class PreferencesTest { String minEntry = entries[0]; final int minValue = Integer.valueOf(values[0]); - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_automatic_download_title)); - clickPreference(withText(R.string.pref_episode_cache_title)); - solo.waitForDialogToOpen(1000); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_automatic_download_title); + clickPreference(R.string.pref_episode_cache_title); solo.scrollUp(); - solo.clickOnText(minEntry); + onView(withText(minEntry)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getEpisodeCacheSize() == minValue, Timeout.getLargeTimeout())); } @@ -327,46 +307,44 @@ public class PreferencesTest { 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.network_pref)); - 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_episode_cache_title)); - solo.waitForDialogToOpen(); - solo.clickOnText(maxEntry); + onView(withText(R.string.network_pref)).perform(click()); + onView(withText(R.string.pref_automatic_download_title)).perform(click()); + onView(withText(R.string.pref_episode_cache_title)).perform(click()); + onView(withText(maxEntry)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getEpisodeCacheSize() == maxValue, Timeout.getLargeTimeout())); } @Test public void testAutomaticDownload() { final boolean automaticDownload = UserPreferences.isEnableAutodownload(); - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_automatic_download_title)); - clickPreference(withText(R.string.pref_automatic_download_title)); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_automatic_download_title); + clickPreference(R.string.pref_automatic_download_title); assertTrue(solo.waitForCondition(() -> automaticDownload != UserPreferences.isEnableAutodownload(), Timeout.getLargeTimeout())); if(UserPreferences.isEnableAutodownload() == false) { - clickPreference(withText(R.string.pref_automatic_download_title)); + clickPreference(R.string.pref_automatic_download_title); } assertTrue(solo.waitForCondition(() -> UserPreferences.isEnableAutodownload() == true, Timeout.getLargeTimeout())); final boolean enableAutodownloadOnBattery = UserPreferences.isEnableAutodownloadOnBattery(); - solo.clickOnText(solo.getString(R.string.pref_automatic_download_on_battery_title)); + onView(withText(R.string.pref_automatic_download_on_battery_title)).perform(click()); assertTrue(solo.waitForCondition(() -> enableAutodownloadOnBattery != UserPreferences.isEnableAutodownloadOnBattery(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_automatic_download_on_battery_title)); + onView(withText(R.string.pref_automatic_download_on_battery_title)).perform(click()); assertTrue(solo.waitForCondition(() -> enableAutodownloadOnBattery == UserPreferences.isEnableAutodownloadOnBattery(), Timeout.getLargeTimeout())); final boolean enableWifiFilter = UserPreferences.isEnableAutodownloadWifiFilter(); - solo.clickOnText(solo.getString(R.string.pref_autodl_wifi_filter_title)); + onView(withText(R.string.pref_autodl_wifi_filter_title)).perform(click()); assertTrue(solo.waitForCondition(() -> enableWifiFilter != UserPreferences.isEnableAutodownloadWifiFilter(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_autodl_wifi_filter_title)); + onView(withText(R.string.pref_autodl_wifi_filter_title)).perform(click()); assertTrue(solo.waitForCondition(() -> enableWifiFilter == UserPreferences.isEnableAutodownloadWifiFilter(), Timeout.getLargeTimeout())); } @Test public void testEpisodeCleanupQueueOnly() { - solo.clickOnText(solo.getString(R.string.network_pref)); - solo.clickOnText(solo.getString(R.string.pref_automatic_download_title)); - solo.clickOnText(solo.getString(R.string.pref_episode_cleanup_title)); + onView(withText(R.string.network_pref)).perform(click()); + onView(withText(R.string.pref_automatic_download_title)).perform(click()); + onView(withText(R.string.pref_episode_cleanup_title)).perform(click()); solo.waitForText(solo.getString(R.string.episode_cleanup_queue_removal)); - solo.clickOnText(solo.getString(R.string.episode_cleanup_queue_removal)); + onView(withText(R.string.episode_cleanup_queue_removal)).perform(click()); assertTrue(solo.waitForCondition(() -> { EpisodeCleanupAlgorithm alg = UserPreferences.getEpisodeCleanupAlgorithm(); return alg instanceof APQueueCleanupAlgorithm; @@ -376,11 +354,11 @@ public class PreferencesTest { @Test public void testEpisodeCleanupNeverAlg() { - solo.clickOnText(solo.getString(R.string.network_pref)); - solo.clickOnText(solo.getString(R.string.pref_automatic_download_title)); - solo.clickOnText(solo.getString(R.string.pref_episode_cleanup_title)); + onView(withText(R.string.network_pref)).perform(click()); + onView(withText(R.string.pref_automatic_download_title)).perform(click()); + onView(withText(R.string.pref_episode_cleanup_title)).perform(click()); solo.waitForText(solo.getString(R.string.episode_cleanup_never)); - solo.clickOnText(solo.getString(R.string.episode_cleanup_never)); + onView(withText(R.string.episode_cleanup_never)).perform(click()); assertTrue(solo.waitForCondition(() -> { EpisodeCleanupAlgorithm alg = UserPreferences.getEpisodeCleanupAlgorithm(); return alg instanceof APNullCleanupAlgorithm; @@ -390,11 +368,11 @@ public class PreferencesTest { @Test public void testEpisodeCleanupClassic() { - solo.clickOnText(solo.getString(R.string.network_pref)); - solo.clickOnText(solo.getString(R.string.pref_automatic_download_title)); - solo.clickOnText(solo.getString(R.string.pref_episode_cleanup_title)); + onView(withText(R.string.network_pref)).perform(click()); + onView(withText(R.string.pref_automatic_download_title)).perform(click()); + onView(withText(R.string.pref_episode_cleanup_title)).perform(click()); solo.waitForText(solo.getString(R.string.episode_cleanup_after_listening)); - solo.clickOnText(solo.getString(R.string.episode_cleanup_after_listening)); + onView(withText(R.string.episode_cleanup_after_listening)).perform(click()); assertTrue(solo.waitForCondition(() -> { EpisodeCleanupAlgorithm alg = UserPreferences.getEpisodeCleanupAlgorithm(); if (alg instanceof APCleanupAlgorithm) { @@ -408,9 +386,9 @@ public class PreferencesTest { @Test public void testEpisodeCleanupNumDays() { - clickPreference(withText(R.string.network_pref)); - clickPreference(withText(R.string.pref_automatic_download_title)); - clickPreference(withText(R.string.pref_episode_cleanup_title)); + clickPreference(R.string.network_pref); + clickPreference(R.string.pref_automatic_download_title); + clickPreference(R.string.pref_episode_cleanup_title); solo.waitForDialogToOpen(); String search = res.getQuantityString(R.plurals.episode_cleanup_days_after_listening, 5, 5); onView(withText(search)).perform(click()); @@ -430,9 +408,8 @@ public class PreferencesTest { int seconds = UserPreferences.getRewindSecs(); int deltas[] = res.getIntArray(R.array.seek_delta_values); - clickPreference(withText(R.string.playback_pref)); - clickPreference(withText(R.string.pref_rewind)); - solo.waitForDialogToOpen(); + clickPreference(R.string.playback_pref); + clickPreference(R.string.pref_rewind); int currentIndex = Arrays.binarySearch(deltas, seconds); assertTrue(currentIndex >= 0 && currentIndex < deltas.length); // found? @@ -442,20 +419,18 @@ public class PreferencesTest { onView(withText(String.valueOf(deltas[newIndex]) + " seconds")).perform(click()); onView(withText("Confirm")).perform(click()); - solo.waitForDialogToClose(); assertTrue(solo.waitForCondition(() -> UserPreferences.getRewindSecs() == deltas[newIndex], Timeout.getLargeTimeout())); } @Test public void testFastForwardChange() { - clickPreference(withText(R.string.playback_pref)); + clickPreference(R.string.playback_pref); for (int i = 2; i > 0; i--) { // repeat twice to catch any error where fastforward is tracking rewind int seconds = UserPreferences.getFastForwardSecs(); int deltas[] = res.getIntArray(R.array.seek_delta_values); - clickPreference(withText(R.string.pref_fast_forward)); - solo.waitForDialogToOpen(); + clickPreference(R.string.pref_fast_forward); int currentIndex = Arrays.binarySearch(deltas, seconds); assertTrue(currentIndex >= 0 && currentIndex < deltas.length); // found? @@ -463,7 +438,7 @@ public class PreferencesTest { // Find next value (wrapping around to next) int newIndex = (currentIndex + 1) % deltas.length; - onView(withText(String.valueOf(deltas[newIndex]) + " seconds")).perform(click()); + onView(withText(deltas[newIndex] + " seconds")).perform(click()); onView(withText("Confirm")).perform(click()); solo.waitForDialogToClose(); @@ -474,33 +449,27 @@ public class PreferencesTest { @Test public void testBackButtonBehaviorGoToPageSelector() { - clickPreference(withText(R.string.user_interface_label)); - clickPreference(withText(R.string.pref_back_button_behavior_title)); - solo.waitForDialogToOpen(); - solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); - solo.waitForDialogToOpen(); - solo.clickOnText(solo.getString(R.string.queue_label)); - solo.clickOnText(solo.getString(R.string.confirm_label)); + clickPreference(R.string.user_interface_label); + clickPreference(R.string.pref_back_button_behavior_title); + onView(withText(R.string.back_button_go_to_page)).perform(click()); + onView(withText(R.string.queue_label)).perform(click()); + onView(withText(R.string.confirm_label)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE, Timeout.getLargeTimeout())); assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(QueueFragment.TAG), Timeout.getLargeTimeout())); - clickPreference(withText(R.string.pref_back_button_behavior_title)); - solo.waitForDialogToOpen(); - solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); - solo.waitForDialogToOpen(); - solo.clickOnText(solo.getString(R.string.episodes_label)); - solo.clickOnText(solo.getString(R.string.confirm_label)); + clickPreference(R.string.pref_back_button_behavior_title); + onView(withText(R.string.back_button_go_to_page)).perform(click()); + onView(withText(R.string.episodes_label)).perform(click()); + onView(withText(R.string.confirm_label)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE, Timeout.getLargeTimeout())); assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(EpisodesFragment.TAG), Timeout.getLargeTimeout())); - clickPreference(withText(R.string.pref_back_button_behavior_title)); - solo.waitForDialogToOpen(); - solo.clickOnText(solo.getString(R.string.back_button_go_to_page)); - solo.waitForDialogToOpen(); - solo.clickOnText(solo.getString(R.string.subscriptions_label)); - solo.clickOnText(solo.getString(R.string.confirm_label)); + clickPreference(R.string.pref_back_button_behavior_title); + onView(withText(R.string.back_button_go_to_page)).perform(click()); + onView(withText(R.string.subscriptions_label)).perform(click()); + onView(withText(R.string.confirm_label)).perform(click()); assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonBehavior() == UserPreferences.BackButtonBehavior.GO_TO_PAGE, Timeout.getLargeTimeout())); assertTrue(solo.waitForCondition(() -> UserPreferences.getBackButtonGoToPage().equals(SubscriptionFragment.TAG), @@ -509,20 +478,15 @@ public class PreferencesTest { @Test public void testDeleteRemovesFromQueue() { - clickPreference(withText(R.string.storage_pref)); + clickPreference(R.string.storage_pref); if (!UserPreferences.shouldDeleteRemoveFromQueue()) { - clickPreference(withText(R.string.pref_delete_removes_from_queue_title)); + clickPreference(R.string.pref_delete_removes_from_queue_title); assertTrue(solo.waitForCondition(UserPreferences::shouldDeleteRemoveFromQueue, Timeout.getLargeTimeout())); } final boolean deleteRemovesFromQueue = UserPreferences.shouldDeleteRemoveFromQueue(); - solo.clickOnText(solo.getString(R.string.pref_delete_removes_from_queue_title)); + onView(withText(R.string.pref_delete_removes_from_queue_title)).perform(click()); assertTrue(solo.waitForCondition(() -> deleteRemovesFromQueue != UserPreferences.shouldDeleteRemoveFromQueue(), Timeout.getLargeTimeout())); - solo.clickOnText(solo.getString(R.string.pref_delete_removes_from_queue_title)); + onView(withText(R.string.pref_delete_removes_from_queue_title)).perform(click()); assertTrue(solo.waitForCondition(() -> deleteRemovesFromQueue == UserPreferences.shouldDeleteRemoveFromQueue(), Timeout.getLargeTimeout())); } - - private void clickPreference(Matcher<View> matcher) { - onView(withId(R.id.list)) - .perform(RecyclerViewActions.actionOnItem(hasDescendant(matcher), click())); - } } |