Search in sources :

Example 96 with Feed

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

the class DbWriterTest method queueTestSetupMultipleItems.

@SuppressWarnings("SameParameterValue")
private Feed queueTestSetupMultipleItems(final int numItems) throws Exception {
    UserPreferences.setEnqueueLocation(UserPreferences.EnqueueLocation.BACK);
    Feed feed = new Feed("url", null, "title");
    feed.setItems(new ArrayList<>());
    for (int i = 0; i < numItems; i++) {
        FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed);
        feed.getItems().add(item);
    }
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    adapter.setCompleteFeed(feed);
    adapter.close();
    for (FeedItem item : feed.getItems()) {
        assertTrue(item.getId() != 0);
    }
    List<Future<?>> futures = new ArrayList<>();
    for (FeedItem item : feed.getItems()) {
        futures.add(DBWriter.addQueueItem(context, item));
    }
    for (Future<?> f : futures) {
        f.get(TIMEOUT, TimeUnit.SECONDS);
    }
    return feed;
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) ArrayList(java.util.ArrayList) Future(java.util.concurrent.Future) Date(java.util.Date) Feed(de.danoeh.antennapod.model.feed.Feed)

Example 97 with Feed

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

the class DbWriterTest method testDeleteFeedNoDownloadedFiles.

@Test
public void testDeleteFeedNoDownloadedFiles() throws Exception {
    File destFolder = context.getExternalFilesDir(TEST_FOLDER);
    assertNotNull(destFolder);
    Feed feed = new Feed("url", null, "title");
    feed.setItems(new ArrayList<>());
    feed.setImageUrl("url");
    // 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(), FeedItem.PLAYED, feed);
        feed.getItems().add(item);
        File enc = new File(destFolder, "file " + i);
        FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", false, null, 0, 0);
        item.setMedia(media);
    }
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    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(context, feed.getId()).get(TIMEOUT, TimeUnit.SECONDS);
    adapter = PodDBAdapter.getInstance();
    adapter.open();
    Cursor c = adapter.getFeedCursor(feed.getId());
    assertEquals(0, c.getCount());
    c.close();
    for (FeedItem item : feed.getItems()) {
        c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
        assertEquals(0, c.getCount());
        c.close();
        c = adapter.getSingleFeedMediaCursor(item.getMedia().getId());
        assertEquals(0, c.getCount());
        c.close();
    }
    adapter.close();
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) FeedMedia(de.danoeh.antennapod.model.feed.FeedMedia) Cursor(android.database.Cursor) File(java.io.File) Date(java.util.Date) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 98 with Feed

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

the class DbWriterTest method testRemoveQueueItemMultipleItems.

@Test
public void testRemoveQueueItemMultipleItems() throws Exception {
    final int numItems = 5;
    // the last one not in queue for boundary condition
    final int numInQueue = numItems - 1;
    Feed feed = createTestFeed(numItems);
    List<FeedItem> itemsToAdd = feed.getItems().subList(0, numInQueue);
    withPodDB(adapter -> adapter.setQueue(itemsToAdd));
    // Actual tests
    // 
    // Use array rather than List to make codes more succinct
    Long[] itemIds = toItemIds(feed.getItems()).toArray(new Long[0]);
    DBWriter.removeQueueItem(context, false, itemIds[1], itemIds[3]).get(TIMEOUT, TimeUnit.SECONDS);
    assertQueueByItemIds("Average case - 2 items removed successfully", itemIds[0], itemIds[2]);
    DBWriter.removeQueueItem(context, false).get(TIMEOUT, TimeUnit.SECONDS);
    assertQueueByItemIds("Boundary case - no items supplied. queue should see no change", itemIds[0], itemIds[2]);
    DBWriter.removeQueueItem(context, false, itemIds[0], itemIds[4], -1L).get(TIMEOUT, TimeUnit.SECONDS);
    assertQueueByItemIds("Boundary case - items not in queue ignored", itemIds[2]);
    DBWriter.removeQueueItem(context, false, itemIds[2], -1L).get(TIMEOUT, TimeUnit.SECONDS);
    // the queue is empty
    assertQueueByItemIds("Boundary case - invalid itemIds ignored");
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 99 with Feed

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

the class FeedCursorMapperTest method testFromCursor.

@SuppressWarnings("ConstantConditions")
@Test
public void testFromCursor() {
    try (Cursor cursor = adapter.getAllFeedsCursor()) {
        cursor.moveToNext();
        Feed feed = FeedCursorMapper.convert(cursor);
        assertTrue(feed.getId() >= 0);
        assertEquals("feed custom title", feed.getTitle());
        assertEquals("feed custom title", feed.getCustomTitle());
        assertEquals("feed link", feed.getLink());
        assertEquals("feed description", feed.getDescription());
        assertEquals("feed payment link", feed.getPaymentLinks().get(0).url);
        assertEquals("feed author", feed.getAuthor());
        assertEquals("feed language", feed.getLanguage());
        assertEquals("feed image url", feed.getImageUrl());
        assertEquals("feed file url", feed.getFile_url());
        assertEquals("feed download url", feed.getDownload_url());
        assertTrue(feed.isDownloaded());
        assertEquals("feed last update", feed.getLastUpdate());
        assertEquals("feed type", feed.getType());
        assertEquals("feed identifier", feed.getFeedIdentifier());
        assertTrue(feed.isPaged());
        assertEquals("feed next page link", feed.getNextPageLink());
        assertTrue(feed.getItemFilter().showUnplayed);
        assertEquals(1, feed.getSortOrder().code);
        assertTrue(feed.hasLastUpdateFailed());
    }
}
Also used : Cursor(android.database.Cursor) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 100 with Feed

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

the class DbReaderTest method testGetFeedItemList.

@Test
public void testGetFeedItemList() {
    final int numFeeds = 1;
    final int numItems = 10;
    Feed feed = saveFeedlist(numFeeds, numItems, false).get(0);
    List<FeedItem> items = feed.getItems();
    feed.setItems(null);
    List<FeedItem> savedItems = DBReader.getFeedItemList(feed);
    assertNotNull(savedItems);
    assertEquals(items.size(), savedItems.size());
    for (int i = 0; i < savedItems.size(); i++) {
        assertEquals(savedItems.get(i).getId(), items.get(i).getId());
    }
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) 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