Search in sources :

Example 26 with Feed

use of de.danoeh.antennapod.model.feed.Feed in project AntennaPod by AntennaPod.

the class DbTasksTest method testUpdateFeedSameTitle.

/**
 * Two feeds with the same title, but different download URLs should be treated as different feeds.
 */
@Test
public void testUpdateFeedSameTitle() {
    Feed feed1 = new Feed("url1", null, "title");
    Feed feed2 = new Feed("url2", null, "title");
    feed1.setItems(new ArrayList<>());
    feed2.setItems(new ArrayList<>());
    Feed savedFeed1 = DBTasks.updateFeed(context, feed1, false);
    Feed savedFeed2 = DBTasks.updateFeed(context, feed2, false);
    assertTrue(savedFeed1.getId() != savedFeed2.getId());
}
Also used : Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 27 with Feed

use of de.danoeh.antennapod.model.feed.Feed in project AntennaPod by AntennaPod.

the class DbTasksTest method testUpdateFeedSetDuplicate.

@Test
public void testUpdateFeedSetDuplicate() {
    final Feed feed = new Feed("url", null, "title");
    feed.setItems(new ArrayList<>());
    for (int i = 0; i < 10; i++) {
        FeedItem item = new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(i), FeedItem.PLAYED, feed);
        FeedMedia media = new FeedMedia(item, "download url " + i, 123, "media/mp3");
        item.setMedia(media);
        feed.getItems().add(item);
    }
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    adapter.setCompleteFeed(feed);
    adapter.close();
    // change the guid of the first item, but leave the download url the same
    FeedItem item = feed.getItemAtIndex(0);
    item.setItemIdentifier("id 0-duplicate");
    item.setTitle("item 0 duplicate");
    Feed newFeed = DBTasks.updateFeed(context, feed, false);
    // id 1-duplicate replaces because the stream url is the same
    assertEquals(10, newFeed.getItems().size());
    Feed feedFromDB = DBReader.getFeed(newFeed.getId());
    // id1-duplicate should override id 1
    assertEquals(10, feedFromDB.getItems().size());
    FeedItem updatedItem = feedFromDB.getItemAtIndex(9);
    assertEquals("item 0 duplicate", updatedItem.getTitle());
    // Should use the new ID for sync etc
    assertEquals("id 0-duplicate", updatedItem.getItemIdentifier());
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) FeedMedia(de.danoeh.antennapod.model.feed.FeedMedia) Date(java.util.Date) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 28 with Feed

use of de.danoeh.antennapod.model.feed.Feed in project AntennaPod by AntennaPod.

the class DbWriterTest method testAddQueueItemSingleItem.

@Test
public void testAddQueueItemSingleItem() throws Exception {
    Feed feed = new Feed("url", null, "title");
    feed.setItems(new ArrayList<>());
    FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed);
    feed.getItems().add(item);
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    adapter.setCompleteFeed(feed);
    adapter.close();
    assertTrue(item.getId() != 0);
    DBWriter.addQueueItem(context, item).get(TIMEOUT, TimeUnit.SECONDS);
    adapter = PodDBAdapter.getInstance();
    adapter.open();
    Cursor cursor = adapter.getQueueIDCursor();
    assertTrue(cursor.moveToFirst());
    assertEquals(item.getId(), cursor.getLong(0));
    cursor.close();
    adapter.close();
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) Cursor(android.database.Cursor) Date(java.util.Date) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 29 with Feed

use of de.danoeh.antennapod.model.feed.Feed in project AntennaPod by AntennaPod.

the class DbWriterTest method testRemoveQueueItem.

@Test
public void testRemoveQueueItem() throws Exception {
    final int numItems = 10;
    Feed feed = createTestFeed(numItems);
    for (int removeIndex = 0; removeIndex < numItems; removeIndex++) {
        final FeedItem item = feed.getItems().get(removeIndex);
        PodDBAdapter adapter = PodDBAdapter.getInstance();
        adapter.open();
        adapter.setQueue(feed.getItems());
        adapter.close();
        DBWriter.removeQueueItem(context, false, item).get(TIMEOUT, TimeUnit.SECONDS);
        adapter = PodDBAdapter.getInstance();
        adapter.open();
        Cursor queue = adapter.getQueueIDCursor();
        assertEquals(numItems - 1, queue.getCount());
        for (int i = 0; i < queue.getCount(); i++) {
            assertTrue(queue.moveToPosition(i));
            final long queueID = queue.getLong(0);
            // removed item is no longer in queue
            assertTrue(queueID != item.getId());
            boolean idFound = false;
            for (FeedItem other : feed.getItems()) {
                // items that were not removed are still in the queue
                idFound = idFound | (other.getId() == queueID);
            }
            assertTrue(idFound);
        }
        queue.close();
        adapter.close();
    }
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) Cursor(android.database.Cursor) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 30 with Feed

use of de.danoeh.antennapod.model.feed.Feed in project AntennaPod by AntennaPod.

the class DbWriterTest method testAddQueueItemMultipleItems.

@Test
public void testAddQueueItemMultipleItems() throws Exception {
    final int numItems = 10;
    Feed feed;
    feed = queueTestSetupMultipleItems(numItems);
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    Cursor cursor = adapter.getQueueIDCursor();
    assertTrue(cursor.moveToFirst());
    assertEquals(numItems, cursor.getCount());
    List<Long> expectedIds;
    expectedIds = FeedItemUtil.getIdList(feed.getItems());
    List<Long> actualIds = new ArrayList<>();
    for (int i = 0; i < numItems; i++) {
        assertTrue(cursor.moveToPosition(i));
        actualIds.add(cursor.getLong(0));
    }
    cursor.close();
    adapter.close();
    assertEquals("Bulk add to queue: result order should be the same as the order given", expectedIds, actualIds);
}
Also used : ArrayList(java.util.ArrayList) Cursor(android.database.Cursor) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Aggregations

Feed (de.danoeh.antennapod.model.feed.Feed)125 FeedItem (de.danoeh.antennapod.model.feed.FeedItem)75 Test (org.junit.Test)61 ArrayList (java.util.ArrayList)43 Date (java.util.Date)37 File (java.io.File)31 FeedMedia (de.danoeh.antennapod.model.feed.FeedMedia)27 Cursor (android.database.Cursor)15 FeedPreferences (de.danoeh.antennapod.model.feed.FeedPreferences)12 NonNull (androidx.annotation.NonNull)10 Nullable (androidx.annotation.Nullable)8 View (android.view.View)7 DownloadStatus (de.danoeh.antennapod.core.service.download.DownloadStatus)7 Log (android.util.Log)6 R (de.danoeh.antennapod.R)6 DownloadRequest (de.danoeh.antennapod.core.service.download.DownloadRequest)6 List (java.util.List)6 ViewGroup (android.view.ViewGroup)5 AlertDialog (androidx.appcompat.app.AlertDialog)5 RequestOptions (com.bumptech.glide.request.RequestOptions)5