diff options
Diffstat (limited to 'app/src/androidTest/java/de')
9 files changed, 147 insertions, 51 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java index 81d684595..d74128c2f 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java @@ -2,12 +2,6 @@ package de.test.antennapod.service.playback; import android.content.Context; import android.test.InstrumentationTestCase; -import de.danoeh.antennapod.core.feed.EventDistributor; -import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedItem; -import de.danoeh.antennapod.core.service.playback.PlaybackServiceTaskManager; -import de.danoeh.antennapod.core.storage.PodDBAdapter; -import de.danoeh.antennapod.core.util.playback.Playable; import java.util.ArrayList; import java.util.Date; @@ -15,6 +9,15 @@ import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import de.danoeh.antennapod.core.feed.EventDistributor; +import de.danoeh.antennapod.core.feed.Feed; +import de.danoeh.antennapod.core.feed.FeedItem; +import de.danoeh.antennapod.core.feed.QueueEvent; +import de.danoeh.antennapod.core.service.playback.PlaybackServiceTaskManager; +import de.danoeh.antennapod.core.storage.PodDBAdapter; +import de.danoeh.antennapod.core.util.playback.Playable; +import de.greenrobot.event.EventBus; + /** * Test class for PlaybackServiceTaskManager */ @@ -94,7 +97,7 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase { }; EventDistributor.getInstance().register(queueListener); List<FeedItem> queue = writeTestQueue("a"); - EventDistributor.getInstance().sendQueueUpdateBroadcast(); + EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.ADDED_ITEMS, queue)); countDownLatch.await(5000, TimeUnit.MILLISECONDS); assertNotNull(queue); 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 1f6a907d4..b90c4e2a1 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java @@ -14,6 +14,7 @@ import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.FeedItemStatistics; import de.danoeh.antennapod.core.storage.PodDBAdapter; +import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import static de.test.antennapod.storage.DBTestUtils.saveFeedlist; @@ -44,7 +45,7 @@ public class DBReaderTest extends InstrumentationTestCase { private void expiredFeedListTestHelper(long lastUpdate, long expirationTime, boolean shouldReturn) { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed(0, new Date(lastUpdate), "feed", "link", "descr", null, - null, null, null, "feed", null, null, "url", false, new FlattrStatus(), false, null); + null, null, null, "feed", null, null, "url", false, new FlattrStatus(), false, null, null); feed.setItems(new ArrayList<FeedItem>()); PodDBAdapter adapter = new PodDBAdapter(context); adapter.open(); @@ -194,7 +195,7 @@ public class DBReaderTest extends InstrumentationTestCase { final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List<FeedItem> queue = saveQueue(numItems); - List<Long> ids = DBReader.getQueueIDList(context); + LongList ids = DBReader.getQueueIDList(context); assertNotNull(ids); assertTrue(queue.size() == ids.size()); for (int i = 0; i < queue.size(); i++) { diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java index e28a7918f..41d3805bd 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java @@ -4,6 +4,14 @@ import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.test.InstrumentationTestCase; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; @@ -13,14 +21,7 @@ import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.PodDBAdapter; import de.danoeh.antennapod.core.util.flattr.FlattrStatus; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -import static de.test.antennapod.storage.DBTestUtils.*; +import static de.test.antennapod.storage.DBTestUtils.saveFeedlist; /** * Test class for DBTasks @@ -296,7 +297,7 @@ public class DBTasksTest extends InstrumentationTestCase { final Context context = getInstrumentation().getTargetContext(); UserPreferences.setUpdateInterval(context, expirationTime); Feed feed = new Feed(0, new Date(lastUpdate), "feed", "link", "descr", null, - null, null, null, "feed", null, null, "url", false, new FlattrStatus(), false, null); + null, null, null, "feed", null, null, "url", false, new FlattrStatus(), false, null, null); feed.setItems(new ArrayList<FeedItem>()); PodDBAdapter adapter = new PodDBAdapter(context); adapter.open(); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java index 17c926cc2..fba3faa96 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java @@ -47,7 +47,7 @@ public class DBTestUtils { adapter.open(); for (int i = 0; i < numFeeds; i++) { Feed f = new Feed(0, new Date(), "feed " + i, "link" + i, "descr", null, null, - null, null, "id" + i, null, null, "url" + i, false, new FlattrStatus(), false, null); + null, null, "id" + i, null, null, "url" + i, false, new FlattrStatus(), false, null, null); f.setItems(new ArrayList<FeedItem>()); for (int j = 0; j < numItems; j++) { FeedItem item = new FeedItem(0, "item " + j, "id" + j, "link" + j, new Date(), diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java index ec8e19e22..f3b0c9165 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java @@ -5,16 +5,6 @@ import android.database.Cursor; import android.test.InstrumentationTestCase; import android.util.Log; -import de.danoeh.antennapod.core.feed.Chapter; -import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedImage; -import de.danoeh.antennapod.core.feed.FeedItem; -import de.danoeh.antennapod.core.feed.FeedMedia; -import de.danoeh.antennapod.core.feed.SimpleChapter; -import de.danoeh.antennapod.core.storage.DBReader; -import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.PodDBAdapter; - import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -25,6 +15,16 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import de.danoeh.antennapod.core.feed.Chapter; +import de.danoeh.antennapod.core.feed.Feed; +import de.danoeh.antennapod.core.feed.FeedImage; +import de.danoeh.antennapod.core.feed.FeedItem; +import de.danoeh.antennapod.core.feed.FeedMedia; +import de.danoeh.antennapod.core.feed.SimpleChapter; +import de.danoeh.antennapod.core.storage.DBReader; +import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.storage.PodDBAdapter; + /** * Test class for DBWriter */ @@ -674,13 +674,13 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); } for (int removeIndex = 0; removeIndex < NUM_ITEMS; removeIndex++) { - final long id = feed.getItems().get(removeIndex).getId(); + final FeedItem item = feed.getItems().get(removeIndex); adapter = new PodDBAdapter(context); adapter.open(); adapter.setQueue(feed.getItems()); adapter.close(); - DBWriter.removeQueueItem(context, id, false).get(TIMEOUT, TimeUnit.SECONDS); + DBWriter.removeQueueItem(context, item, false).get(TIMEOUT, TimeUnit.SECONDS); adapter = new PodDBAdapter(context); adapter.open(); Cursor queue = adapter.getQueueIDCursor(); @@ -688,10 +688,10 @@ public class DBWriterTest extends InstrumentationTestCase { for (int i = 0; i < queue.getCount(); i++) { assertTrue(queue.moveToPosition(i)); final long queueID = queue.getLong(0); - assertTrue(queueID != id); // removed item is no longer in queue + assertTrue(queueID != item.getId()); // removed item is no longer in queue boolean idFound = false; - for (FeedItem item : feed.getItems()) { // items that were not removed are still in the queue - idFound = idFound | (item.getId() == queueID); + for (FeedItem other : feed.getItems()) { // items that were not removed are still in the queue + idFound = idFound | (other.getId() == queueID); } assertTrue(idFound); } 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 bbcc4ce5c..470866c3c 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java @@ -7,11 +7,21 @@ import android.widget.ListView; import com.robotium.solo.Solo; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.DefaultOnlineFeedViewActivity; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.feed.Feed; +import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.PodDBAdapter; +import de.danoeh.antennapod.fragment.AllEpisodesFragment; +import de.danoeh.antennapod.fragment.DownloadsFragment; +import de.danoeh.antennapod.fragment.NewEpisodesFragment; +import de.danoeh.antennapod.fragment.PlaybackHistoryFragment; +import de.danoeh.antennapod.fragment.QueueFragment; import de.danoeh.antennapod.preferences.PreferenceController; /** @@ -22,6 +32,8 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv private Solo solo; private UITestUtils uiTestUtils; + private SharedPreferences prefs; + public MainActivityTest() { super(MainActivity.class); } @@ -38,7 +50,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv adapter.close(); // override first launch preference - SharedPreferences prefs = getInstrumentation().getTargetContext().getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE); + prefs = getInstrumentation().getTargetContext().getSharedPreferences(MainActivity.PREF_NAME, Context.MODE_PRIVATE); prefs.edit().putBoolean(MainActivity.PREF_IS_FIRST_LAUNCH, false).commit(); } @@ -46,7 +58,12 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv protected void tearDown() throws Exception { uiTestUtils.tearDown(); solo.finishOpenedActivities(); + PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext()); + + // reset preferences + prefs.edit().clear().commit(); + super.tearDown(); } @@ -71,11 +88,13 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv public void testClickNavDrawer() throws Exception { uiTestUtils.addLocalFeedData(false); - // all episodes + UserPreferences.setHiddenDrawerItems(getInstrumentation().getTargetContext(), new ArrayList<String>()); + + // queue openNavDrawer(); - solo.clickOnText(solo.getString(R.string.all_episodes_label)); + solo.clickOnText(solo.getString(R.string.queue_label)); solo.waitForView(android.R.id.list); - assertEquals(solo.getString(R.string.all_episodes_label), getActionbarTitle()); + assertEquals(solo.getString(R.string.queue_label), getActionbarTitle()); // new episodes openNavDrawer(); @@ -83,11 +102,11 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv solo.waitForView(android.R.id.list); assertEquals(solo.getString(R.string.new_episodes_label), getActionbarTitle()); - // queue + // all episodes openNavDrawer(); - solo.clickOnText(solo.getString(R.string.queue_label)); + solo.clickOnText(solo.getString(R.string.all_episodes_label)); solo.waitForView(android.R.id.list); - assertEquals(solo.getString(R.string.queue_label), getActionbarTitle()); + assertEquals(solo.getString(R.string.all_episodes_label), getActionbarTitle()); // downloads openNavDrawer(); @@ -125,7 +144,75 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv public void testGoToPreferences() { openNavDrawer(); - solo.clickOnMenuItem(solo.getString(R.string.settings_label)); + solo.clickOnText(solo.getString(R.string.settings_label)); solo.waitForActivity(PreferenceController.getPreferenceActivity()); } + + public void testDrawerPreferencesHideSomeElements() { + UserPreferences.setHiddenDrawerItems(getInstrumentation().getTargetContext(), new ArrayList<String>()); + openNavDrawer(); + solo.clickLongOnText(solo.getString(R.string.queue_label)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.all_episodes_label)); + solo.clickOnText(solo.getString(R.string.playback_history_label)); + solo.clickOnText(solo.getString(R.string.confirm_label)); + solo.waitForDialogToClose(); + List<String> hidden = UserPreferences.getHiddenDrawerItems(); + assertEquals(2, hidden.size()); + assertTrue(hidden.contains(AllEpisodesFragment.TAG)); + assertTrue(hidden.contains(PlaybackHistoryFragment.TAG)); + } + + public void testDrawerPreferencesUnhideSomeElements() { + List<String> hidden = Arrays.asList(NewEpisodesFragment.TAG, DownloadsFragment.TAG); + UserPreferences.setHiddenDrawerItems(getInstrumentation().getTargetContext(), hidden); + openNavDrawer(); + solo.clickLongOnText(solo.getString(R.string.queue_label)); + solo.waitForDialogToOpen(); + solo.clickOnText(solo.getString(R.string.downloads_label)); + solo.clickOnText(solo.getString(R.string.queue_label)); + solo.clickOnText(solo.getString(R.string.confirm_label)); + solo.waitForDialogToClose(); + hidden = UserPreferences.getHiddenDrawerItems(); + assertEquals(2, hidden.size()); + assertTrue(hidden.contains(QueueFragment.TAG)); + assertTrue(hidden.contains(NewEpisodesFragment.TAG)); + } + + public void testDrawerPreferencesHideAllElements() { + UserPreferences.setHiddenDrawerItems(getInstrumentation().getTargetContext(), new ArrayList<String>()); + String[] titles = getInstrumentation().getTargetContext().getResources().getStringArray(R.array.nav_drawer_titles); + + openNavDrawer(); + solo.clickLongOnText(solo.getString(R.string.queue_label)); + solo.waitForDialogToOpen(); + for(String title : titles) { + solo.clickOnText(title); + } + solo.clickOnText(solo.getString(R.string.confirm_label)); + solo.waitForDialogToClose(); + List<String> hidden = UserPreferences.getHiddenDrawerItems(); + assertEquals(6, hidden.size()); + for(String tag : MainActivity.NAV_DRAWER_TAGS) { + assertTrue(hidden.contains(tag)); + } + } + + public void testDrawerPreferencesHideCurrentElement() { + UserPreferences.setHiddenDrawerItems(getInstrumentation().getTargetContext(), new ArrayList<String>()); + + openNavDrawer(); + String downloads = solo.getString(R.string.downloads_label); + solo.clickOnText(downloads); + solo.waitForView(android.R.id.list); + openNavDrawer(); + solo.clickLongOnText(downloads); + solo.waitForDialogToOpen(); + solo.clickOnText(downloads); + solo.clickOnText(solo.getString(R.string.confirm_label)); + solo.waitForDialogToClose(); + List<String> hidden = UserPreferences.getHiddenDrawerItems(); + assertEquals(1, hidden.size()); + assertTrue(hidden.contains(DownloadsFragment.TAG)); + } } 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 249cb0dd6..85923d40f 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -25,7 +25,9 @@ import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; +import de.danoeh.antennapod.core.feed.QueueEvent; import de.danoeh.antennapod.core.storage.PodDBAdapter; +import de.greenrobot.event.EventBus; import de.test.antennapod.util.service.download.HTTPBin; import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator; @@ -202,6 +204,6 @@ public class UITestUtils { adapter.setQueue(queue); adapter.close(); EventDistributor.getInstance().sendFeedUpdateBroadcast(); - EventDistributor.getInstance().sendQueueUpdateBroadcast(); + EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.ADDED_ITEMS, queue)); } } diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java index 69cc827ec..bd3df0f9d 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java +++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java @@ -1,15 +1,17 @@ package de.test.antennapod.util.syndication.feedgenerator; import android.util.Xml; -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.syndication.util.SyndDateUtils; + import org.xmlpull.v1.XmlSerializer; import java.io.IOException; import java.io.OutputStream; +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.util.DateUtils; + /** * Creates Atom feeds. See FeedGenerator for more information. */ @@ -83,9 +85,9 @@ public class AtomGenerator implements FeedGenerator{ if (item.getPubDate() != null) { xml.startTag(null, "published"); if ((flags & FEATURE_USE_RFC3339LOCAL) != 0) { - xml.text(SyndDateUtils.formatRFC3339Local(item.getPubDate())); + xml.text(DateUtils.formatRFC3339Local(item.getPubDate())); } else { - xml.text(SyndDateUtils.formatRFC3339UTC(item.getPubDate())); + xml.text(DateUtils.formatRFC3339UTC(item.getPubDate())); } xml.endTag(null, "published"); } diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/RSS2Generator.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/RSS2Generator.java index d37434f06..27e89620d 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/RSS2Generator.java +++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/RSS2Generator.java @@ -3,7 +3,7 @@ package de.test.antennapod.util.syndication.feedgenerator; import android.util.Xml; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; -import de.danoeh.antennapod.core.syndication.util.SyndDateUtils; +import de.danoeh.antennapod.core.util.DateUtils; import org.xmlpull.v1.XmlSerializer; import java.io.IOException; @@ -79,7 +79,7 @@ public class RSS2Generator implements FeedGenerator{ } if (item.getPubDate() != null) { xml.startTag(null, "pubDate"); - xml.text(SyndDateUtils.formatRFC822Date(item.getPubDate())); + xml.text(DateUtils.formatRFC822Date(item.getPubDate())); xml.endTag(null, "pubDate"); } if ((flags & FEATURE_WRITE_GUID) != 0) { |