summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-04-10 00:03:53 +0200
committerByteHamster <info@bytehamster.com>2020-04-10 00:05:52 +0200
commit2de7ff44cbfeefb065f849fd44d220a1dac35dd8 (patch)
tree43c58cd31703497edab7a406891108549632917e /app/src/androidTest/java
parenta35ecaa74bd9392f9e7e513522aee8e1601e78cf (diff)
downloadAntennaPod-2de7ff44cbfeefb065f849fd44d220a1dac35dd8.zip
Allow Proguard to optimize androidx packages
This reduces the method count from 64k to 44k and the apk size from 8MB to 7MB
Diffstat (limited to 'app/src/androidTest/java')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java36
-rw-r--r--app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java59
-rw-r--r--app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java1
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java2
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java1
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java36
6 files changed, 55 insertions, 80 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java
index efd6070bb..12227d258 100644
--- a/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/playback/PlaybackTest.java
@@ -4,7 +4,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
-import android.view.KeyEvent;
import android.view.View;
import androidx.test.filters.LargeTest;
import androidx.test.platform.app.InstrumentationRegistry;
@@ -13,6 +12,7 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
+import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
@@ -20,6 +20,7 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.LongList;
+import de.danoeh.antennapod.core.util.playback.PlaybackController;
import de.test.antennapod.EspressoTestUtils;
import de.test.antennapod.IgnoreOnCi;
import de.test.antennapod.ui.UITestUtils;
@@ -71,6 +72,7 @@ public class PlaybackTest {
public String playerToUse;
private UITestUtils uiTestUtils;
protected Context context;
+ private PlaybackController controller;
@Parameterized.Parameters(name = "{0}")
public static Collection<Object[]> initParameters() {
@@ -96,6 +98,14 @@ public class PlaybackTest {
activityTestRule.finishActivity();
EspressoTestUtils.tryKillPlaybackService();
uiTestUtils.tearDown();
+ if (controller != null) {
+ controller.release();
+ }
+ }
+
+ private void setupPlaybackController() {
+ controller = new PlaybackController(activityTestRule.getActivity());
+ controller.init();
}
@Test
@@ -103,9 +113,10 @@ public class PlaybackTest {
setContinuousPlaybackPreference(false);
uiTestUtils.addLocalFeedData(true);
activityTestRule.launchActivity(new Intent());
+ setupPlaybackController();
playFromQueue(0);
- Awaitility.await().atMost(5, TimeUnit.SECONDS).until(
- () -> uiTestUtils.getPlaybackController(getActivity()).getStatus() == PlayerStatus.INITIALIZED);
+ Awaitility.await().atMost(5, TimeUnit.SECONDS)
+ .until(() -> controller.getStatus() == PlayerStatus.INITIALIZED);
}
@Test
@@ -120,9 +131,9 @@ public class PlaybackTest {
playFromQueue(0);
Awaitility.await().atMost(2, TimeUnit.SECONDS).until(
- () -> first.getMedia().equals(uiTestUtils.getCurrentMedia()));
+ () -> first.getMedia().getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
Awaitility.await().atMost(6, TimeUnit.SECONDS).until(
- () -> second.getMedia().equals(uiTestUtils.getCurrentMedia()));
+ () -> second.getMedia().getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
}
@@ -152,6 +163,7 @@ public class PlaybackTest {
uiTestUtils.addLocalFeedData(true);
activityTestRule.launchActivity(new Intent());
+ setupPlaybackController();
final int fiIdx = 0;
final FeedItem feedItem = DBReader.getQueue().get(fiIdx);
@@ -161,11 +173,11 @@ public class PlaybackTest {
// let playback run a bit then pause
Awaitility.await()
.atMost(1000, MILLISECONDS)
- .until(() -> PlayerStatus.PLAYING == uiTestUtils.getPlaybackController(getActivity()).getStatus());
+ .until(() -> PlayerStatus.PLAYING == controller.getStatus());
pauseEpisode();
Awaitility.await()
.atMost(1000, MILLISECONDS)
- .until(() -> PlayerStatus.PAUSED == uiTestUtils.getPlaybackController(getActivity()).getStatus());
+ .until(() -> PlayerStatus.PAUSED == controller.getStatus());
assertThat("Ensure even with smart mark as play, after pause, the item remains in the queue.",
DBReader.getQueue(), hasItems(feedItem));
@@ -232,7 +244,7 @@ public class PlaybackTest {
FeedMedia media = episodes.get(0).getMedia();
Awaitility.await().atMost(1, TimeUnit.SECONDS).until(
- () -> media.equals(uiTestUtils.getCurrentMedia()));
+ () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
}
/**
@@ -248,7 +260,7 @@ public class PlaybackTest {
FeedMedia media = queue.get(itemIdx).getMedia();
Awaitility.await().atMost(1, TimeUnit.SECONDS).until(
- () -> media.equals(uiTestUtils.getCurrentMedia()));
+ () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
}
@@ -265,15 +277,15 @@ public class PlaybackTest {
startLocalPlayback();
FeedMedia media = episodes.get(0).getMedia();
Awaitility.await().atMost(1, TimeUnit.SECONDS).until(
- () -> media.equals(uiTestUtils.getCurrentMedia()));
+ () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(
- () -> !media.equals(uiTestUtils.getCurrentMedia()));
+ () -> media.getId() != PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
startLocalPlayback();
Awaitility.await().atMost(1, TimeUnit.SECONDS).until(
- () -> media.equals(uiTestUtils.getCurrentMedia()));
+ () -> media.getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
}
protected void doTestSmartMarkAsPlayed_Skip_ForEpisode(int itemIdxNegAllowed) throws Exception {
diff --git a/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java b/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java
index 41f2ec864..5396b218d 100644
--- a/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/storage/AutoDownloadTest.java
@@ -1,37 +1,27 @@
package de.test.antennapod.storage;
import android.content.Context;
-import android.content.Intent;
-
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.test.core.app.ApplicationProvider;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
-import de.test.antennapod.EspressoTestUtils;
-import org.awaitility.Awaitility;
-import org.awaitility.core.ConditionTimeoutException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
import de.danoeh.antennapod.core.ClientConfig;
import de.danoeh.antennapod.core.DBTasksCallbacks;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia;
+import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.AutomaticDownloadAlgorithm;
import de.danoeh.antennapod.core.storage.DBReader;
-import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm;
-import de.danoeh.antennapod.core.storage.PodDBAdapter;
-import de.danoeh.antennapod.core.util.playback.Playable;
+import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
+import de.test.antennapod.EspressoTestUtils;
import de.test.antennapod.ui.UITestUtils;
+import org.awaitility.Awaitility;
+import org.awaitility.core.ConditionTimeoutException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.junit.Assert.assertTrue;
@@ -100,13 +90,12 @@ public class AutoDownloadTest {
// ensure that currently playing has been advanced to the next one by this point.
Awaitility.await("advanced to the next episode")
.atMost(6000, MILLISECONDS) // the test mp3 media is 3-second long. twice should be enough
- .until(() -> item1.equals(stubDownloadAlgorithm.getCurrentlyPlayingAtDownload()));
+ .until(() -> item1.getMedia().getId() == stubDownloadAlgorithm.getCurrentlyPlayingAtDownload());
} catch (ConditionTimeoutException cte) {
- FeedItem actual = stubDownloadAlgorithm.getCurrentlyPlayingAtDownload();
+ long actual = stubDownloadAlgorithm.getCurrentlyPlayingAtDownload();
fail("when auto download is triggered, the next episode should be playing: ("
+ item1.getId() + ", " + item1.getTitle() + ") . "
- + "Actual playing: ("
- + (actual == null ? "" : actual.getId() + ", " + actual.getTitle()) + ")"
+ + "Actual playing: (" + actual + ")"
);
}
@@ -121,15 +110,7 @@ public class AutoDownloadTest {
.start();
Awaitility.await("episode is playing")
.atMost(2000, MILLISECONDS)
- .until(() -> item.equals(getCurrentlyPlaying()));
- }
-
- private FeedItem getCurrentlyPlaying() {
- Playable playable = Playable.PlayableUtils.createInstanceFromPreferences(context);
- if (playable == null) {
- return null;
- }
- return ((FeedMedia) playable).getItem();
+ .until(() -> item.getMedia().getId() == PlaybackPreferences.getCurrentlyPlayingFeedMediaId());
}
private void useDownloadAlgorithm(final AutomaticDownloadAlgorithm downloadAlgorithm) {
@@ -146,23 +127,21 @@ public class AutoDownloadTest {
};
}
- private class StubDownloadAlgorithm implements AutomaticDownloadAlgorithm {
- @Nullable
- private FeedItem currentlyPlaying;
+ private static class StubDownloadAlgorithm implements AutomaticDownloadAlgorithm {
+ private long currentlyPlaying = -1;
@Override
public Runnable autoDownloadUndownloadedItems(Context context) {
return () -> {
- if (currentlyPlaying == null) {
- currentlyPlaying = getCurrentlyPlaying();
+ if (currentlyPlaying == -1) {
+ currentlyPlaying = PlaybackPreferences.getCurrentlyPlayingFeedMediaId();
} else {
throw new AssertionError("Stub automatic download should be invoked once and only once");
}
};
}
- @Nullable
- FeedItem getCurrentlyPlayingAtDownload() {
+ long getCurrentlyPlayingAtDownload() {
return currentlyPlaying;
}
}
diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java
index f4a66ee61..b2458bac6 100644
--- a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java
@@ -404,6 +404,7 @@ public class DBReaderTest {
List<Feed> feeds = saveFeedlist(1, 1, false, true, NUM_CHAPTERS);
FeedItem item1 = feeds.get(0).getItems().get(0);
FeedItem item2 = DBReader.getFeedItem(item1.getId());
+ DBReader.loadChaptersOfFeedItem(item2);
assertTrue(item2.hasChapters());
assertEquals(item1.getChapters(), item2.getChapters());
}
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 86b167db2..d5251ace7 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/NavigationDrawerTest.java
@@ -183,7 +183,7 @@ public class NavigationDrawerTest {
onView(first(withText(R.string.queue_label))).perform(longClick());
for (int i = 0; i < titles.length; i++) {
String title = titles[i];
- onView(first(withText(title))).perform(click());
+ onView(allOf(withText(title), isDisplayed())).perform(click());
if (i == 3) {
onView(withId(R.id.select_dialog_listview)).perform(swipeUp());
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java b/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java
index e91554521..288b862b8 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/SpeedChangeTest.java
@@ -83,6 +83,7 @@ public class SpeedChangeTest {
@After
public void tearDown() throws Exception {
uiTestUtils.tearDown();
+ controller.release();
}
@Test
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 4294349fc..1dddca6b5 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
@@ -1,14 +1,20 @@
package de.test.antennapod.ui;
import android.content.Context;
-import android.graphics.Bitmap;
import android.util.Log;
-
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
-import de.danoeh.antennapod.core.util.playback.Playable;
+import de.danoeh.antennapod.core.event.QueueEvent;
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.feed.FeedItem;
+import de.danoeh.antennapod.core.feed.FeedMedia;
+import de.danoeh.antennapod.core.storage.PodDBAdapter;
+import de.test.antennapod.util.service.download.HTTPBin;
+import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
+import org.greenrobot.eventbus.EventBus;
+import org.junit.Assert;
import java.io.File;
import java.io.FileOutputStream;
@@ -19,19 +25,6 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
-import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.core.event.QueueEvent;
-import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.feed.FeedItem;
-import de.danoeh.antennapod.core.feed.FeedMedia;
-import de.danoeh.antennapod.core.storage.PodDBAdapter;
-import de.danoeh.antennapod.core.util.playback.PlaybackController;
-import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
-import de.test.antennapod.util.service.download.HTTPBin;
-import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
-import org.greenrobot.eventbus.EventBus;
-import org.junit.Assert;
-
/**
* Utility methods for UI tests.
* Starts a web server that hosts feeds, episodes and images.
@@ -200,17 +193,6 @@ public class UITestUtils {
EventBus.getDefault().post(QueueEvent.setQueue(queue));
}
- public PlaybackController getPlaybackController(MainActivity mainActivity) {
- ExternalPlayerFragment fragment = (ExternalPlayerFragment) mainActivity.getSupportFragmentManager()
- .findFragmentByTag(ExternalPlayerFragment.TAG);
- return fragment.getPlaybackControllerTestingOnly();
- }
-
- public FeedMedia getCurrentMedia() {
- Playable playable = Playable.PlayableUtils.createInstanceFromPreferences(context);
- return (FeedMedia) playable;
- }
-
public void setMediaFileName(String filename) {
testFileName = filename;
}