summaryrefslogtreecommitdiff
path: root/src/instrumentationTest/de/test/antennapod/storage
diff options
context:
space:
mode:
Diffstat (limited to 'src/instrumentationTest/de/test/antennapod/storage')
-rw-r--r--src/instrumentationTest/de/test/antennapod/storage/DBReaderTest.java408
-rw-r--r--src/instrumentationTest/de/test/antennapod/storage/DBTasksTest.java326
-rw-r--r--src/instrumentationTest/de/test/antennapod/storage/DBTestUtils.java57
-rw-r--r--src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java796
4 files changed, 0 insertions, 1587 deletions
diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBReaderTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBReaderTest.java
deleted file mode 100644
index c42c7a0cc..000000000
--- a/src/instrumentationTest/de/test/antennapod/storage/DBReaderTest.java
+++ /dev/null
@@ -1,408 +0,0 @@
-package instrumentationTest.de.test.antennapod.storage;
-
-import android.content.Context;
-import android.test.InstrumentationTestCase;
-import de.danoeh.antennapod.feed.Feed;
-import de.danoeh.antennapod.feed.FeedItem;
-import de.danoeh.antennapod.feed.FeedMedia;
-import de.danoeh.antennapod.storage.DBReader;
-import de.danoeh.antennapod.storage.FeedItemStatistics;
-import de.danoeh.antennapod.storage.PodDBAdapter;
-import de.danoeh.antennapod.util.flattr.FlattrStatus;
-import static instrumentationTest.de.test.antennapod.storage.DBTestUtils.*;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Random;
-
-import static instrumentationTest.de.test.antennapod.storage.DBTestUtils.saveFeedlist;
-
-/**
- * Test class for DBReader
- */
-public class DBReaderTest extends InstrumentationTestCase {
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- final Context context = getInstrumentation().getTargetContext();
- assertTrue(PodDBAdapter.deleteDatabase(context));
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- final Context context = getInstrumentation().getTargetContext();
- context.deleteDatabase(PodDBAdapter.DATABASE_NAME);
- // make sure database is created
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.close();
- }
-
- 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());
- feed.setItems(new ArrayList<FeedItem>());
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- List<Feed> expiredFeeds = DBReader.getExpiredFeedsList(context, expirationTime);
- assertNotNull(expiredFeeds);
- if (shouldReturn) {
- assertTrue(expiredFeeds.size() == 1);
- assertTrue(expiredFeeds.get(0).getId() == feed.getId());
- } else {
- assertTrue(expiredFeeds.isEmpty());
- }
- }
-
- public void testGetExpiredFeedsListShouldReturnFeed() {
- final long expirationTime = 1000 * 60 * 60; // 1 hour
- expiredFeedListTestHelper(System.currentTimeMillis() - expirationTime - 1, expirationTime, true);
- }
-
- public void testGetExpiredFeedsListShouldNotReturnFeed() {
- final long expirationTime = 1000 * 60 * 60; // 1 hour
- expiredFeedListTestHelper(System.currentTimeMillis() - expirationTime / 2, expirationTime, false);
- }
-
-
- public void testGetFeedList() {
- final Context context = getInstrumentation().getTargetContext();
- List<Feed> feeds = saveFeedlist(context, 10, 0, false);
- List<Feed> savedFeeds = DBReader.getFeedList(context);
- assertNotNull(savedFeeds);
- assertEquals(feeds.size(), savedFeeds.size());
- for (int i = 0; i < feeds.size(); i++) {
- assertTrue(savedFeeds.get(i).getId() == feeds.get(i).getId());
- }
- }
-
- public void testGetFeedListSortOrder() {
- final Context context = getInstrumentation().getTargetContext();
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
-
- Feed feed1 = new Feed(0, new Date(), "A", "link", "d", null, null, null, "rss", "A", null, "", "", true);
- Feed feed2 = new Feed(0, new Date(), "b", "link", "d", null, null, null, "rss", "b", null, "", "", true);
- Feed feed3 = new Feed(0, new Date(), "C", "link", "d", null, null, null, "rss", "C", null, "", "", true);
- Feed feed4 = new Feed(0, new Date(), "d", "link", "d", null, null, null, "rss", "d", null, "", "", true);
- adapter.setCompleteFeed(feed1);
- adapter.setCompleteFeed(feed2);
- adapter.setCompleteFeed(feed3);
- adapter.setCompleteFeed(feed4);
- assertTrue(feed1.getId() != 0);
- assertTrue(feed2.getId() != 0);
- assertTrue(feed3.getId() != 0);
- assertTrue(feed4.getId() != 0);
-
- adapter.close();
-
- List<Feed> saved = DBReader.getFeedList(context);
- assertNotNull(saved);
- assertEquals("Wrong size: ", 4, saved.size());
-
- assertEquals("Wrong id of feed 1: ", feed1.getId(), saved.get(0).getId());
- assertEquals("Wrong id of feed 2: ", feed2.getId(), saved.get(1).getId());
- assertEquals("Wrong id of feed 3: ", feed3.getId(), saved.get(2).getId());
- assertEquals("Wrong id of feed 4: ", feed4.getId(), saved.get(3).getId());
- }
-
- public void testFeedListDownloadUrls() {
- final Context context = getInstrumentation().getTargetContext();
- List<Feed> feeds = saveFeedlist(context, 10, 0, false);
- List<String> urls = DBReader.getFeedListDownloadUrls(context);
- assertNotNull(urls);
- assertTrue(urls.size() == feeds.size());
- for (int i = 0; i < urls.size(); i++) {
- assertEquals(urls.get(i), feeds.get(i).getDownload_url());
- }
- }
-
- public void testLoadFeedDataOfFeedItemlist() {
- final Context context = getInstrumentation().getTargetContext();
- final int numFeeds = 10;
- final int numItems = 1;
- List<Feed> feeds = saveFeedlist(context, numFeeds, numItems, false);
- List<FeedItem> items = new ArrayList<FeedItem>();
- for (Feed f : feeds) {
- for (FeedItem item : f.getItems()) {
- item.setFeed(null);
- item.setFeedId(f.getId());
- items.add(item);
- }
- }
- DBReader.loadFeedDataOfFeedItemlist(context, items);
- for (int i = 0; i < numFeeds; i++) {
- for (int j = 0; j < numItems; j++) {
- FeedItem item = feeds.get(i).getItems().get(j);
- assertNotNull(item.getFeed());
- assertTrue(item.getFeed().getId() == feeds.get(i).getId());
- assertTrue(item.getFeedId() == item.getFeed().getId());
- }
- }
- }
-
- public void testGetFeedItemList() {
- final Context context = getInstrumentation().getTargetContext();
- final int numFeeds = 1;
- final int numItems = 10;
- Feed feed = saveFeedlist(context, numFeeds, numItems, false).get(0);
- List<FeedItem> items = feed.getItems();
- feed.setItems(null);
- List<FeedItem> savedItems = DBReader.getFeedItemList(context, feed);
- assertNotNull(savedItems);
- assertTrue(savedItems.size() == items.size());
- for (int i = 0; i < savedItems.size(); i++) {
- assertTrue(items.get(i).getId() == savedItems.get(i).getId());
- }
- }
-
- private List<FeedItem> saveQueue(int numItems) {
- if (numItems <= 0) {
- throw new IllegalArgumentException("numItems<=0");
- }
- final Context context = getInstrumentation().getTargetContext();
- List<Feed> feeds = saveFeedlist(context, numItems, numItems, false);
- List<FeedItem> allItems = new ArrayList<FeedItem>();
- for (Feed f : feeds) {
- allItems.addAll(f.getItems());
- }
- // take random items from every feed
- Random random = new Random();
- List<FeedItem> queue = new ArrayList<FeedItem>();
- while (queue.size() < numItems) {
- int index = random.nextInt(numItems);
- if (!queue.contains(allItems.get(index))) {
- queue.add(allItems.get(index));
- }
- }
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setQueue(queue);
- adapter.close();
- return queue;
- }
-
- public void testGetQueueIDList() {
- final Context context = getInstrumentation().getTargetContext();
- final int numItems = 10;
- List<FeedItem> queue = saveQueue(numItems);
- List<Long> ids = DBReader.getQueueIDList(context);
- assertNotNull(ids);
- assertTrue(queue.size() == ids.size());
- for (int i = 0; i < queue.size(); i++) {
- assertTrue(ids.get(i) != 0);
- assertTrue(queue.get(i).getId() == ids.get(i));
- }
- }
-
- public void testGetQueue() {
- final Context context = getInstrumentation().getTargetContext();
- final int numItems = 10;
- List<FeedItem> queue = saveQueue(numItems);
- List<FeedItem> savedQueue = DBReader.getQueue(context);
- assertNotNull(savedQueue);
- assertTrue(queue.size() == savedQueue.size());
- for (int i = 0; i < queue.size(); i++) {
- assertTrue(savedQueue.get(i).getId() != 0);
- assertTrue(queue.get(i).getId() == savedQueue.get(i).getId());
- }
- }
-
- private List<FeedItem> saveDownloadedItems(int numItems) {
- if (numItems <= 0) {
- throw new IllegalArgumentException("numItems<=0");
- }
- final Context context = getInstrumentation().getTargetContext();
- List<Feed> feeds = saveFeedlist(context, numItems, numItems, true);
- List<FeedItem> items = new ArrayList<FeedItem>();
- for (Feed f : feeds) {
- items.addAll(f.getItems());
- }
- List<FeedItem> downloaded = new ArrayList<FeedItem>();
- Random random = new Random();
-
- while (downloaded.size() < numItems) {
- int i = random.nextInt(numItems);
- if (!downloaded.contains(items.get(i))) {
- FeedItem item = items.get(i);
- item.getMedia().setDownloaded(true);
- item.getMedia().setFile_url("file" + i);
- downloaded.add(item);
- }
- }
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setFeedItemlist(downloaded);
- adapter.close();
- return downloaded;
- }
-
- public void testGetDownloadedItems() {
- final Context context = getInstrumentation().getTargetContext();
- final int numItems = 10;
- List<FeedItem> downloaded = saveDownloadedItems(numItems);
- List<FeedItem> downloaded_saved = DBReader.getDownloadedItems(context);
- assertNotNull(downloaded_saved);
- assertTrue(downloaded_saved.size() == downloaded.size());
- for (FeedItem item : downloaded_saved) {
- assertNotNull(item.getMedia());
- assertTrue(item.getMedia().isDownloaded());
- assertNotNull(item.getMedia().getDownload_url());
- }
- }
-
- private List<FeedItem> saveUnreadItems(int numItems) {
- if (numItems <= 0) {
- throw new IllegalArgumentException("numItems<=0");
- }
- final Context context = getInstrumentation().getTargetContext();
- List<Feed> feeds = saveFeedlist(context, numItems, numItems, true);
- List<FeedItem> items = new ArrayList<FeedItem>();
- for (Feed f : feeds) {
- items.addAll(f.getItems());
- }
- List<FeedItem> unread = new ArrayList<FeedItem>();
- Random random = new Random();
-
- while (unread.size() < numItems) {
- int i = random.nextInt(numItems);
- if (!unread.contains(items.get(i))) {
- FeedItem item = items.get(i);
- item.setRead(false);
- unread.add(item);
- }
- }
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setFeedItemlist(unread);
- adapter.close();
- return unread;
- }
-
- public void testGetUnreadItemsList() {
- final Context context = getInstrumentation().getTargetContext();
- final int numItems = 10;
-
- List<FeedItem> unread = saveUnreadItems(numItems);
- List<FeedItem> unreadSaved = DBReader.getUnreadItemsList(context);
- assertNotNull(unreadSaved);
- assertTrue(unread.size() == unreadSaved.size());
- for (FeedItem item : unreadSaved) {
- assertFalse(item.isRead());
- }
- }
-
- public void testGetUnreadItemIds() {
- final Context context = getInstrumentation().getTargetContext();
- final int numItems = 10;
-
- List<FeedItem> unread = saveUnreadItems(numItems);
- long[] unreadIds = new long[unread.size()];
- for (int i = 0; i < unread.size(); i++) {
- unreadIds[i] = unread.get(i).getId();
- }
- long[] unreadSaved = DBReader.getUnreadItemIds(context);
- assertNotNull(unreadSaved);
- assertTrue(unread.size() == unreadSaved.length);
- for (long savedId : unreadSaved) {
- boolean found = false;
- for (long id : unreadIds) {
- if (id == savedId) {
- found = true;
- break;
- }
- }
- assertTrue(found);
- }
- }
-
- public void testGetPlaybackHistory() {
- final Context context = getInstrumentation().getTargetContext();
- final int numItems = 10;
- final int playedItems = 5;
- final int numFeeds = 1;
-
- Feed feed = DBTestUtils.saveFeedlist(context, numFeeds, numItems, true).get(0);
- long[] ids = new long[playedItems];
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- for (int i = 0; i < playedItems; i++) {
- FeedMedia m = feed.getItems().get(i).getMedia();
- m.setPlaybackCompletionDate(new Date(i + 1));
- adapter.setFeedMediaPlaybackCompletionDate(m);
- ids[ids.length - 1 - i] = m.getItem().getId();
- }
- adapter.close();
-
- List<FeedItem> saved = DBReader.getPlaybackHistory(context);
- assertNotNull(saved);
- assertEquals("Wrong size: ", playedItems, saved.size());
- for (int i = 0; i < playedItems; i++) {
- FeedItem item = saved.get(i);
- assertNotNull(item.getMedia().getPlaybackCompletionDate());
- assertEquals("Wrong sort order: ", item.getId(), ids[i]);
- }
- }
-
- public void testGetFeedStatisticsCheckOrder() {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_FEEDS = 10;
- final int NUM_ITEMS = 10;
- List<Feed> feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, false);
- List<FeedItemStatistics> statistics = DBReader.getFeedStatisticsList(context);
- assertNotNull(statistics);
- assertEquals(feeds.size(), statistics.size());
- for (int i = 0; i < NUM_FEEDS; i++) {
- assertEquals("Wrong entry at index " + i, feeds.get(i).getId(), statistics.get(i).getFeedID());
- }
- }
-
- public void testGetNavDrawerDataQueueEmptyNoUnreadItems() {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_FEEDS = 10;
- final int NUM_ITEMS = 10;
- List<Feed> feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, true);
- DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(context);
- assertEquals(NUM_FEEDS, navDrawerData.feeds.size());
- assertEquals(0, navDrawerData.numUnreadItems);
- assertEquals(0, navDrawerData.queueSize);
- }
-
- public void testGetNavDrawerDataQueueNotEmptyWithUnreadItems() {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_FEEDS = 10;
- final int NUM_ITEMS = 10;
- final int NUM_QUEUE = 1;
- final int NUM_UNREAD = 2;
- List<Feed> feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, true);
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- for (int i = 0; i < NUM_UNREAD; i++) {
- FeedItem item = feeds.get(0).getItems().get(i);
- item.setRead(false);
- adapter.setSingleFeedItem(item);
- }
- List<FeedItem> queue = new ArrayList<FeedItem>();
- for (int i = 0; i < NUM_QUEUE; i++) {
- FeedItem item = feeds.get(1).getItems().get(i);
- queue.add(item);
- }
- adapter.setQueue(queue);
-
- adapter.close();
-
- DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(context);
- assertEquals(NUM_FEEDS, navDrawerData.feeds.size());
- assertEquals(NUM_UNREAD, navDrawerData.numUnreadItems);
- assertEquals(NUM_QUEUE, navDrawerData.queueSize);
- }
-}
diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBTasksTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBTasksTest.java
deleted file mode 100644
index 1e5afd0e3..000000000
--- a/src/instrumentationTest/de/test/antennapod/storage/DBTasksTest.java
+++ /dev/null
@@ -1,326 +0,0 @@
-package instrumentationTest.de.test.antennapod.storage;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.test.InstrumentationTestCase;
-import de.danoeh.antennapod.feed.Feed;
-import de.danoeh.antennapod.feed.FeedItem;
-import de.danoeh.antennapod.feed.FeedMedia;
-import de.danoeh.antennapod.preferences.UserPreferences;
-import de.danoeh.antennapod.storage.DBReader;
-import de.danoeh.antennapod.storage.DBTasks;
-import de.danoeh.antennapod.storage.PodDBAdapter;
-import de.danoeh.antennapod.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 instrumentationTest.de.test.antennapod.storage.DBTestUtils.*;
-
-/**
- * Test class for DBTasks
- */
-public class DBTasksTest extends InstrumentationTestCase {
- private static final String TEST_FOLDER = "testDBTasks";
- private static final int EPISODE_CACHE_SIZE = 5;
-
- private File destFolder;
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- final Context context = getInstrumentation().getTargetContext();
- assertTrue(PodDBAdapter.deleteDatabase(context));
-
- for (File f : destFolder.listFiles()) {
- assertTrue(f.delete());
- }
- assertTrue(destFolder.delete());
-
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
- assertTrue(destFolder.exists());
- assertTrue(destFolder.canWrite());
-
- final Context context = getInstrumentation().getTargetContext();
- context.deleteDatabase(PodDBAdapter.DATABASE_NAME);
- // make sure database is created
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.close();
-
- SharedPreferences.Editor prefEdit = PreferenceManager.getDefaultSharedPreferences(getInstrumentation().getTargetContext().getApplicationContext()).edit();
- prefEdit.putString(UserPreferences.PREF_EPISODE_CACHE_SIZE, Integer.toString(EPISODE_CACHE_SIZE));
- prefEdit.commit();
- }
-
- public void testPerformAutoCleanupShouldDelete() throws IOException {
- final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2;
-
- Feed feed = new Feed("url", new Date(), "title");
- List<FeedItem> items = new ArrayList<FeedItem>();
- feed.setItems(items);
- List<File> files = new ArrayList<File>();
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), true, feed);
-
- File f = new File(destFolder, "file " + i);
- assertTrue(f.createNewFile());
- files.add(f);
- item.setMedia(new FeedMedia(0, item, 1, 0, 1L, "m", f.getAbsolutePath(), "url", true, new Date(NUM_ITEMS - i), 0));
- items.add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- for (FeedItem item : items) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getMedia().getId() != 0);
- }
- DBTasks.performAutoCleanup(getInstrumentation().getTargetContext());
- for (int i = 0; i < files.size(); i++) {
- if (i < EPISODE_CACHE_SIZE) {
- assertTrue(files.get(i).exists());
- } else {
- assertFalse(files.get(i).exists());
- }
- }
- }
-
- public void testPerformAutoCleanupShouldNotDeleteBecauseUnread() throws IOException {
- final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2;
-
- Feed feed = new Feed("url", new Date(), "title");
- List<FeedItem> items = new ArrayList<FeedItem>();
- feed.setItems(items);
- List<File> files = new ArrayList<File>();
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), false, feed);
-
- File f = new File(destFolder, "file " + i);
- assertTrue(f.createNewFile());
- assertTrue(f.exists());
- files.add(f);
- item.setMedia(new FeedMedia(0, item, 1, 0, 1L, "m", f.getAbsolutePath(), "url", true, new Date(NUM_ITEMS - i), 0));
- items.add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- for (FeedItem item : items) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getMedia().getId() != 0);
- }
- DBTasks.performAutoCleanup(getInstrumentation().getTargetContext());
- for (File file : files) {
- assertTrue(file.exists());
- }
- }
-
- public void testPerformAutoCleanupShouldNotDeleteBecauseInQueue() throws IOException {
- final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2;
-
- Feed feed = new Feed("url", new Date(), "title");
- List<FeedItem> items = new ArrayList<FeedItem>();
- feed.setItems(items);
- List<File> files = new ArrayList<File>();
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), true, feed);
-
- File f = new File(destFolder, "file " + i);
- assertTrue(f.createNewFile());
- assertTrue(f.exists());
- files.add(f);
- item.setMedia(new FeedMedia(0, item, 1, 0, 1L, "m", f.getAbsolutePath(), "url", true, new Date(NUM_ITEMS - i), 0));
- items.add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.setQueue(items);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- for (FeedItem item : items) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getMedia().getId() != 0);
- }
- DBTasks.performAutoCleanup(getInstrumentation().getTargetContext());
- for (File file : files) {
- assertTrue(file.exists());
- }
- }
-
- /**
- * Reproduces a bug where DBTasks.performAutoCleanup(android.content.Context) would use the ID of the FeedItem in the
- * call to DBWriter.deleteFeedMediaOfItem instead of the ID of the FeedMedia. This would cause the wrong item to be deleted.
- * @throws IOException
- */
- public void testPerformAutoCleanupShouldNotDeleteBecauseInQueue_withFeedsWithNoMedia() throws IOException {
- final Context context = getInstrumentation().getTargetContext();
- // add feed with no enclosures so that item ID != media ID
- saveFeedlist(context, 1, 10, false);
-
- // add candidate for performAutoCleanup
- List<Feed> feeds = saveFeedlist(getInstrumentation().getTargetContext(), 1, 1, true);
- FeedMedia m = feeds.get(0).getItems().get(0).getMedia();
- m.setDownloaded(true);
- m.setFile_url("file");
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setMedia(m);
- adapter.close();
-
- testPerformAutoCleanupShouldNotDeleteBecauseInQueue();
- }
-
- public void testUpdateFeedNewFeed() {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_ITEMS = 10;
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- for (int i = 0; i < NUM_ITEMS; i++) {
- feed.getItems().add(new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(), false, feed));
- }
- Feed newFeed = DBTasks.updateFeed(context, feed)[0];
-
- assertTrue(newFeed == feed);
- assertTrue(feed.getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertFalse(item.isRead());
- assertTrue(item.getId() != 0);
- }
- }
-
- /** Two feeds with the same title, but different download URLs should be treated as different feeds. */
- public void testUpdateFeedSameTitle() {
- final Context context = getInstrumentation().getTargetContext();
-
- Feed feed1 = new Feed("url1", new Date(), "title");
- Feed feed2 = new Feed("url2", new Date(), "title");
-
- feed1.setItems(new ArrayList<FeedItem>());
- feed2.setItems(new ArrayList<FeedItem>());
-
- Feed savedFeed1 = DBTasks.updateFeed(context, feed1)[0];
- Feed savedFeed2 = DBTasks.updateFeed(context, feed2)[0];
-
- assertTrue(savedFeed1.getId() != savedFeed2.getId());
- }
-
- public void testUpdateFeedUpdatedFeed() {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_ITEMS_OLD = 10;
- final int NUM_ITEMS_NEW = 10;
-
- final Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- for (int i = 0; i < NUM_ITEMS_OLD; i++) {
- feed.getItems().add(new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(i), true, feed));
- }
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- // ensure that objects have been saved in db, then reset
- assertTrue(feed.getId() != 0);
- final long feedID = feed.getId();
- feed.setId(0);
- List<Long> itemIDs = new ArrayList<Long>();
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- itemIDs.add(item.getId());
- item.setId(0);
- }
-
- for (int i = NUM_ITEMS_OLD; i < NUM_ITEMS_NEW + NUM_ITEMS_OLD; i++) {
- feed.getItems().add(0, new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(i), true, feed));
- }
-
- final Feed newFeed = DBTasks.updateFeed(context, feed)[0];
- assertTrue(feed != newFeed);
-
- updatedFeedTest(newFeed, feedID, itemIDs, NUM_ITEMS_OLD, NUM_ITEMS_NEW);
-
- final Feed feedFromDB = DBReader.getFeed(context, newFeed.getId());
- assertNotNull(feedFromDB);
- assertTrue(feedFromDB.getId() == newFeed.getId());
- updatedFeedTest(feedFromDB, feedID, itemIDs, NUM_ITEMS_OLD, NUM_ITEMS_NEW);
- }
-
- private void updatedFeedTest(final Feed newFeed, long feedID, List<Long> itemIDs, final int NUM_ITEMS_OLD, final int NUM_ITEMS_NEW) {
- assertTrue(newFeed.getId() == feedID);
- assertTrue(newFeed.getItems().size() == NUM_ITEMS_NEW + NUM_ITEMS_OLD);
- Collections.reverse(newFeed.getItems());
- Date lastDate = new Date(0);
- for (int i = 0; i < NUM_ITEMS_OLD; i++) {
- FeedItem item = newFeed.getItems().get(i);
- assertTrue(item.getFeed() == newFeed);
- assertTrue(item.getId() == itemIDs.get(i));
- assertTrue(item.isRead());
- assertTrue(item.getPubDate().getTime() >= lastDate.getTime());
- lastDate = item.getPubDate();
- }
- for (int i = NUM_ITEMS_OLD; i < NUM_ITEMS_NEW + NUM_ITEMS_OLD; i++) {
- FeedItem item = newFeed.getItems().get(i);
- assertTrue(item.getFeed() == newFeed);
- assertTrue(item.getId() != 0);
- assertFalse(item.isRead());
- assertTrue(item.getPubDate().getTime() >= lastDate.getTime());
- lastDate = item.getPubDate();
- }
- }
-
- private void expiredFeedListTestHelper(long lastUpdate, long expirationTime, boolean shouldReturn) {
- 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());
- feed.setItems(new ArrayList<FeedItem>());
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- List<Feed> expiredFeeds = DBTasks.getExpiredFeeds(context);
- assertNotNull(expiredFeeds);
- if (shouldReturn) {
- assertTrue(expiredFeeds.size() == 1);
- assertTrue(expiredFeeds.get(0).getId() == feed.getId());
- } else {
- assertTrue(expiredFeeds.isEmpty());
- }
- }
-
- public void testGetExpiredFeedsTestShouldReturn() {
- final long expirationTime = 1000 * 60 * 60;
- expiredFeedListTestHelper(System.currentTimeMillis() - expirationTime - 1, expirationTime, true);
- }
-
- public void testGetExpiredFeedsTestShouldNotReturn() {
- final long expirationTime = 1000 * 60 * 60;
- expiredFeedListTestHelper(System.currentTimeMillis() - expirationTime / 2, expirationTime, false);
- }
-}
diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBTestUtils.java b/src/instrumentationTest/de/test/antennapod/storage/DBTestUtils.java
deleted file mode 100644
index 7e9e1b908..000000000
--- a/src/instrumentationTest/de/test/antennapod/storage/DBTestUtils.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package instrumentationTest.de.test.antennapod.storage;
-
-import android.content.Context;
-import de.danoeh.antennapod.feed.Feed;
-import de.danoeh.antennapod.feed.FeedItem;
-import de.danoeh.antennapod.feed.FeedMedia;
-import de.danoeh.antennapod.storage.PodDBAdapter;
-import de.danoeh.antennapod.util.comparator.FeedItemPubdateComparator;
-import de.danoeh.antennapod.util.flattr.FlattrStatus;
-import junit.framework.Assert;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-
-/**
- * Utility methods for DB* tests.
- */
-public class DBTestUtils {
-
- public static List<Feed> saveFeedlist(Context context, int numFeeds, int numItems, boolean withMedia) {
- if (numFeeds <= 0) {
- throw new IllegalArgumentException("numFeeds<=0");
- }
- if (numItems < 0) {
- throw new IllegalArgumentException("numItems<0");
- }
-
- List<Feed> feeds = new ArrayList<Feed>();
- PodDBAdapter adapter = new PodDBAdapter(context);
- 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());
- 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(),
- true, f);
- if (withMedia) {
- FeedMedia media = new FeedMedia(item, "url" + j, 1, "audio/mp3");
- item.setMedia(media);
- }
- f.getItems().add(item);
- }
- Collections.sort(f.getItems(), new FeedItemPubdateComparator());
- adapter.setCompleteFeed(f);
- Assert.assertTrue(f.getId() != 0);
- for (FeedItem item : f.getItems()) {
- Assert.assertTrue(item.getId() != 0);
- }
- feeds.add(f);
- }
- adapter.close();
- return feeds;
- }
-}
diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java
deleted file mode 100644
index 67d99f9fc..000000000
--- a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java
+++ /dev/null
@@ -1,796 +0,0 @@
-package instrumentationTest.de.test.antennapod.storage;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.test.InstrumentationTestCase;
-import android.util.Log;
-import de.danoeh.antennapod.feed.Feed;
-import de.danoeh.antennapod.feed.FeedImage;
-import de.danoeh.antennapod.feed.FeedItem;
-import de.danoeh.antennapod.feed.FeedMedia;
-import de.danoeh.antennapod.storage.DBReader;
-import de.danoeh.antennapod.storage.DBWriter;
-import de.danoeh.antennapod.storage.PodDBAdapter;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-/**
- * Test class for DBWriter
- */
-public class DBWriterTest extends InstrumentationTestCase {
- private static final String TAG = "DBWriterTest";
- private static final String TEST_FOLDER = "testDBWriter";
- private static final long TIMEOUT = 5L;
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- final Context context = getInstrumentation().getTargetContext();
- assertTrue(PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext()));
-
- File testDir = context.getExternalFilesDir(TEST_FOLDER);
- assertNotNull(testDir);
- for (File f : testDir.listFiles()) {
- f.delete();
- }
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- final Context context = getInstrumentation().getTargetContext();
- context.deleteDatabase(PodDBAdapter.DATABASE_NAME);
- // make sure database is created
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.close();
- }
-
- public void testDeleteFeedMediaOfItemFileExists() throws IOException, ExecutionException, InterruptedException {
- File dest = new File(getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER), "testFile");
-
- assertTrue(dest.createNewFile());
-
- Feed feed = new Feed("url", new Date(), "title");
- List<FeedItem> items = new ArrayList<FeedItem>();
- feed.setItems(items);
- FeedItem item = new FeedItem(0, "Item", "Item", "url", new Date(), true, feed);
-
- FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", dest.getAbsolutePath(), "download_url", true, null, 0);
- item.setMedia(media);
-
- items.add(item);
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
- assertTrue(media.getId() != 0);
- assertTrue(item.getId() != 0);
-
- DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get();
- media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId());
- assertNotNull(media);
- assertFalse(dest.exists());
- assertFalse(media.isDownloaded());
- assertNull(media.getFile_url());
- }
-
- public void testDeleteFeed() throws IOException, ExecutionException, InterruptedException, TimeoutException {
- File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
-
- // create Feed image
- File imgFile = new File(destFolder, "image");
- assertTrue(imgFile.createNewFile());
- FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true);
- image.setOwner(feed);
- feed.setImage(image);
-
- List<File> itemFiles = new ArrayList<File>();
- // create items with downloaded media files
- for (int i = 0; i < 10; i++) {
- FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed);
- feed.getItems().add(item);
-
- File enc = new File(destFolder, "file " + i);
- assertTrue(enc.createNewFile());
- itemFiles.add(enc);
-
- FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", true, null, 0);
- item.setMedia(media);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- assertTrue(feed.getImage().getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getMedia().getId() != 0);
- }
-
- DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- // check if files still exist
- assertFalse(imgFile.exists());
- for (File f : itemFiles) {
- assertFalse(f.exists());
- }
-
- adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- Cursor c = adapter.getFeedCursor(feed.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getImageCursor(image.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- for (FeedItem item : feed.getItems()) {
- c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getSingleFeedMediaCursor(item.getMedia().getId());
- assertTrue(c.getCount() == 0);
- c.close();
- }
- }
-
- public void testDeleteFeedNoImage() throws ExecutionException, InterruptedException, IOException, TimeoutException {
- File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
-
- feed.setImage(null);
-
- List<File> itemFiles = new ArrayList<File>();
- // create items with downloaded media files
- for (int i = 0; i < 10; i++) {
- FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed);
- feed.getItems().add(item);
-
- File enc = new File(destFolder, "file " + i);
- assertTrue(enc.createNewFile());
-
- itemFiles.add(enc);
- FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", true, null, 0);
- item.setMedia(media);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getMedia().getId() != 0);
- }
-
- DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- // check if files still exist
- for (File f : itemFiles) {
- assertFalse(f.exists());
- }
-
- adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- Cursor c = adapter.getFeedCursor(feed.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- for (FeedItem item : feed.getItems()) {
- c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getSingleFeedMediaCursor(item.getMedia().getId());
- assertTrue(c.getCount() == 0);
- c.close();
- }
- }
-
- public void testDeleteFeedNoItems() throws IOException, ExecutionException, InterruptedException, TimeoutException {
- File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(null);
-
- // create Feed image
- File imgFile = new File(destFolder, "image");
- assertTrue(imgFile.createNewFile());
- FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true);
- image.setOwner(feed);
- feed.setImage(image);
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- assertTrue(feed.getImage().getId() != 0);
-
- DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- // check if files still exist
- assertFalse(imgFile.exists());
-
- adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- Cursor c = adapter.getFeedCursor(feed.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getImageCursor(image.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- }
-
- public void testDeleteFeedNoFeedMedia() throws IOException, ExecutionException, InterruptedException, TimeoutException {
- File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
-
- // create Feed image
- File imgFile = new File(destFolder, "image");
- assertTrue(imgFile.createNewFile());
- FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true);
- image.setOwner(feed);
- feed.setImage(image);
-
- // create items
- for (int i = 0; i < 10; i++) {
- FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed);
- feed.getItems().add(item);
-
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- assertTrue(feed.getImage().getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- }
-
- DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- // check if files still exist
- assertFalse(imgFile.exists());
-
- adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- Cursor c = adapter.getFeedCursor(feed.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getImageCursor(image.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- for (FeedItem item : feed.getItems()) {
- c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
- assertTrue(c.getCount() == 0);
- c.close();
- }
- }
-
- public void testDeleteFeedWithItemImages() throws InterruptedException, ExecutionException, TimeoutException, IOException {
- File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
-
- // create Feed image
- File imgFile = new File(destFolder, "image");
- assertTrue(imgFile.createNewFile());
- FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true);
- image.setOwner(feed);
- feed.setImage(image);
-
- // create items with images
- for (int i = 0; i < 10; i++) {
- FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed);
- feed.getItems().add(item);
- File itemImageFile = new File(destFolder, "item-image-" + i);
- FeedImage itemImage = new FeedImage(0, "item-image" + i, itemImageFile.getAbsolutePath(), "url", true);
- item.setImage(itemImage);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- assertTrue(feed.getImage().getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getImage().getId() != 0);
- }
-
- DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- // check if files still exist
- assertFalse(imgFile.exists());
-
- adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- Cursor c = adapter.getFeedCursor(feed.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getImageCursor(image.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- for (FeedItem item : feed.getItems()) {
- c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getImageCursor(item.getImage().getId());
- assertEquals(0, c.getCount());
- c.close();
- }
- }
-
- public void testDeleteFeedWithQueueItems() throws ExecutionException, InterruptedException, TimeoutException {
- File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
-
- // create Feed image
- File imgFile = new File(destFolder, "image");
- FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true);
- image.setOwner(feed);
- feed.setImage(image);
-
- List<File> itemFiles = new ArrayList<File>();
- // create items with downloaded media files
- for (int i = 0; i < 10; i++) {
- FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed);
- feed.getItems().add(item);
-
- File enc = new File(destFolder, "file " + i);
- itemFiles.add(enc);
-
- FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", false, null, 0);
- item.setMedia(media);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- assertTrue(feed.getImage().getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getMedia().getId() != 0);
- }
-
-
- List<FeedItem> queue = new ArrayList<FeedItem>();
- queue.addAll(feed.getItems());
- adapter.open();
- adapter.setQueue(queue);
-
- Cursor queueCursor = adapter.getQueueIDCursor();
- assertTrue(queueCursor.getCount() == queue.size());
- queueCursor.close();
-
- adapter.close();
- DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
- adapter.open();
-
- Cursor c = adapter.getFeedCursor(feed.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getImageCursor(image.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- for (FeedItem item : feed.getItems()) {
- c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getSingleFeedMediaCursor(item.getMedia().getId());
- assertTrue(c.getCount() == 0);
- c.close();
- }
- c = adapter.getQueueCursor();
- assertTrue(c.getCount() == 0);
- c.close();
- adapter.close();
- }
-
- public void testDeleteFeedNoDownloadedFiles() throws ExecutionException, InterruptedException, TimeoutException {
- File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
- assertNotNull(destFolder);
-
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
-
- // create Feed image
- File imgFile = new File(destFolder, "image");
- FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true);
- image.setOwner(feed);
- feed.setImage(image);
-
- List<File> itemFiles = new ArrayList<File>();
- // create items with downloaded media files
- for (int i = 0; i < 10; i++) {
- FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed);
- feed.getItems().add(item);
-
- File enc = new File(destFolder, "file " + i);
- itemFiles.add(enc);
-
- FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", false, null, 0);
- item.setMedia(media);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- assertTrue(feed.getImage().getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- assertTrue(item.getMedia().getId() != 0);
- }
-
- DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- adapter = new PodDBAdapter(getInstrumentation().getContext());
- adapter.open();
- Cursor c = adapter.getFeedCursor(feed.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getImageCursor(image.getId());
- assertTrue(c.getCount() == 0);
- c.close();
- for (FeedItem item : feed.getItems()) {
- c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
- assertTrue(c.getCount() == 0);
- c.close();
- c = adapter.getSingleFeedMediaCursor(item.getMedia().getId());
- assertTrue(c.getCount() == 0);
- c.close();
- }
- }
-
- private FeedMedia playbackHistorySetup(Date playbackCompletionDate) {
- final Context context = getInstrumentation().getTargetContext();
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), true, feed);
- FeedMedia media = new FeedMedia(0, item, 10, 0, 1, "mime", null, "url", false, playbackCompletionDate, 0);
- feed.getItems().add(item);
- item.setMedia(media);
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
- assertTrue(media.getId() != 0);
- return media;
- }
-
- public void testAddItemToPlaybackHistoryNotPlayedYet() throws ExecutionException, InterruptedException {
- final Context context = getInstrumentation().getTargetContext();
-
- FeedMedia media = playbackHistorySetup(null);
- DBWriter.addItemToPlaybackHistory(context, media).get();
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- media = DBReader.getFeedMedia(context, media.getId());
- adapter.close();
-
- assertNotNull(media);
- assertNotNull(media.getPlaybackCompletionDate());
- }
-
- public void testAddItemToPlaybackHistoryAlreadyPlayed() throws ExecutionException, InterruptedException {
- final long OLD_DATE = 0;
- final Context context = getInstrumentation().getTargetContext();
-
- FeedMedia media = playbackHistorySetup(new Date(OLD_DATE));
- DBWriter.addItemToPlaybackHistory(getInstrumentation().getTargetContext(), media).get();
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- media = DBReader.getFeedMedia(context, media.getId());
- adapter.close();
-
- assertNotNull(media);
- assertNotNull(media.getPlaybackCompletionDate());
- assertFalse(OLD_DATE == media.getPlaybackCompletionDate().getTime());
- }
-
- private Feed queueTestSetupMultipleItems(final int NUM_ITEMS) throws InterruptedException, ExecutionException, TimeoutException {
- final Context context = getInstrumentation().getTargetContext();
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), true, feed);
- feed.getItems().add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- }
- List<Future<?>> futures = new ArrayList<Future<?>>();
- for (FeedItem item : feed.getItems()) {
- futures.add(DBWriter.addQueueItem(context, item.getId()));
- }
- for (Future<?> f : futures) {
- f.get(TIMEOUT, TimeUnit.SECONDS);
- }
- return feed;
- }
-
- public void testAddQueueItemSingleItem() throws InterruptedException, ExecutionException, TimeoutException {
- final Context context = getInstrumentation().getTargetContext();
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), true, feed);
- feed.getItems().add(item);
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(item.getId() != 0);
- DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- adapter = new PodDBAdapter(context);
- adapter.open();
- Cursor cursor = adapter.getQueueIDCursor();
- assertTrue(cursor.moveToFirst());
- assertTrue(cursor.getLong(0) == item.getId());
- cursor.close();
- adapter.close();
- }
-
- public void testAddQueueItemSingleItemAlreadyInQueue() throws InterruptedException, ExecutionException, TimeoutException {
- final Context context = getInstrumentation().getTargetContext();
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), true, feed);
- feed.getItems().add(item);
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(item.getId() != 0);
- DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS);
-
- adapter = new PodDBAdapter(context);
- adapter.open();
- Cursor cursor = adapter.getQueueIDCursor();
- assertTrue(cursor.moveToFirst());
- assertTrue(cursor.getLong(0) == item.getId());
- cursor.close();
- adapter.close();
-
- DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS);
- adapter = new PodDBAdapter(context);
- adapter.open();
- cursor = adapter.getQueueIDCursor();
- assertTrue(cursor.moveToFirst());
- assertTrue(cursor.getLong(0) == item.getId());
- assertTrue(cursor.getCount() == 1);
- cursor.close();
- adapter.close();
- }
-
- public void testAddQueueItemMultipleItems() throws InterruptedException, ExecutionException, TimeoutException {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_ITEMS = 10;
-
- Feed feed = queueTestSetupMultipleItems(NUM_ITEMS);
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- Cursor cursor = adapter.getQueueIDCursor();
- assertTrue(cursor.moveToFirst());
- assertTrue(cursor.getCount() == NUM_ITEMS);
- for (int i = 0; i < NUM_ITEMS; i++) {
- assertTrue(cursor.moveToPosition(i));
- assertTrue(cursor.getLong(0) == feed.getItems().get(i).getId());
- }
- cursor.close();
- adapter.close();
- }
-
- public void testClearQueue() throws InterruptedException, ExecutionException, TimeoutException {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_ITEMS = 10;
-
- Feed feed = queueTestSetupMultipleItems(NUM_ITEMS);
- DBWriter.clearQueue(context).get(TIMEOUT, TimeUnit.SECONDS);
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- Cursor cursor = adapter.getQueueIDCursor();
- assertFalse(cursor.moveToFirst());
- cursor.close();
- adapter.close();
- }
-
- public void testRemoveQueueItem() throws InterruptedException, ExecutionException, TimeoutException {
- final int NUM_ITEMS = 10;
- final Context context = getInstrumentation().getTargetContext();
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), true, feed);
- feed.getItems().add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- }
- for (int removeIndex = 0; removeIndex < NUM_ITEMS; removeIndex++) {
- final long id = feed.getItems().get(removeIndex).getId();
- adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setQueue(feed.getItems());
- adapter.close();
-
- DBWriter.removeQueueItem(context, id, false).get(TIMEOUT, TimeUnit.SECONDS);
- adapter = new PodDBAdapter(context);
- adapter.open();
- Cursor queue = adapter.getQueueIDCursor();
- assertTrue(queue.getCount() == NUM_ITEMS - 1);
- 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
- boolean idFound = false;
- for (FeedItem item : feed.getItems()) { // items that were not removed are still in the queue
- idFound = idFound | (item.getId() == queueID);
- }
- assertTrue(idFound);
- }
-
- queue.close();
- adapter.close();
- }
- }
-
- public void testMoveQueueItem() throws InterruptedException, ExecutionException, TimeoutException {
- final int NUM_ITEMS = 10;
- final Context context = getInstrumentation().getTargetContext();
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), true, feed);
- feed.getItems().add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- }
- for (int from = 0; from < NUM_ITEMS; from++) {
- for (int to = 0; to < NUM_ITEMS; to++) {
- if (from == to) {
- continue;
- }
- Log.d(TAG, String.format("testMoveQueueItem: From=%d, To=%d", from, to));
- final long fromID = feed.getItems().get(from).getId();
-
- adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setQueue(feed.getItems());
- adapter.close();
-
- DBWriter.moveQueueItem(context, from, to, false).get(TIMEOUT, TimeUnit.SECONDS);
- adapter = new PodDBAdapter(context);
- adapter.open();
- Cursor queue = adapter.getQueueIDCursor();
- assertTrue(queue.getCount() == NUM_ITEMS);
- assertTrue(queue.moveToPosition(from));
- assertFalse(queue.getLong(0) == fromID);
- assertTrue(queue.moveToPosition(to));
- assertTrue(queue.getLong(0) == fromID);
-
- queue.close();
- adapter.close();
- }
- }
- }
-
- public void testMarkFeedRead() throws InterruptedException, ExecutionException, TimeoutException {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_ITEMS = 10;
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), false, feed);
- feed.getItems().add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- }
-
- DBWriter.markFeedRead(context, feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
- List<FeedItem> loadedItems = DBReader.getFeedItemList(context, feed);
- for (FeedItem item : loadedItems) {
- assertTrue(item.isRead());
- }
- }
-
- public void testMarkAllItemsReadSameFeed() throws InterruptedException, ExecutionException, TimeoutException {
- final Context context = getInstrumentation().getTargetContext();
- final int NUM_ITEMS = 10;
- Feed feed = new Feed("url", new Date(), "title");
- feed.setItems(new ArrayList<FeedItem>());
- for (int i = 0; i < NUM_ITEMS; i++) {
- FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), false, feed);
- feed.getItems().add(item);
- }
-
- PodDBAdapter adapter = new PodDBAdapter(context);
- adapter.open();
- adapter.setCompleteFeed(feed);
- adapter.close();
-
- assertTrue(feed.getId() != 0);
- for (FeedItem item : feed.getItems()) {
- assertTrue(item.getId() != 0);
- }
-
- DBWriter.markAllItemsRead(context).get(TIMEOUT, TimeUnit.SECONDS);
- List<FeedItem> loadedItems = DBReader.getFeedItemList(context, feed);
- for (FeedItem item : loadedItems) {
- assertTrue(item.isRead());
- }
- }
-
-}