diff options
author | Tony Tam <149837+tonytamsf@users.noreply.github.com> | 2021-07-11 00:58:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-11 09:58:54 +0200 |
commit | 81ea42a2a46fea1f633bc34352fde02f4c412f7c (patch) | |
tree | f01a46798f7709f34b3756a175c0609b959d16da /core/src/test | |
parent | b4558efe4abe2b0b55963c4585bf413af72e2699 (diff) | |
download | AntennaPod-81ea42a2a46fea1f633bc34352fde02f4c412f7c.zip |
Dedup based on item unique id, media url or title (#4839)
Diffstat (limited to 'core/src/test')
3 files changed, 35 insertions, 3 deletions
diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/DbCleanupTests.java b/core/src/test/java/de/danoeh/antennapod/core/storage/DbCleanupTests.java index 1c4c92574..b5c2e5c73 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/storage/DbCleanupTests.java +++ b/core/src/test/java/de/danoeh/antennapod/core/storage/DbCleanupTests.java @@ -134,7 +134,7 @@ public class DbCleanupTests { if (itemState == FeedItem.PLAYED) { playbackCompletionDate = itemDate; } - FeedItem item = new FeedItem(0, "title", "id", "link", itemDate, itemState, feed); + FeedItem item = new FeedItem(0, "title", "id" + i, "link", itemDate, itemState, feed); File f = new File(destFolder, "file " + i); assertTrue(f.createNewFile()); diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/DbNullCleanupAlgorithmTest.java b/core/src/test/java/de/danoeh/antennapod/core/storage/DbNullCleanupAlgorithmTest.java index 733318724..6485c9515 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/storage/DbNullCleanupAlgorithmTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/storage/DbNullCleanupAlgorithmTest.java @@ -92,7 +92,7 @@ public class DbNullCleanupAlgorithmTest { feed.setItems(items); List<File> files = new ArrayList<>(); for (int i = 0; i < numItems; i++) { - FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); + FeedItem item = new FeedItem(0, "title", "id" + i, "link", new Date(), FeedItem.PLAYED, feed); File f = new File(destFolder, "file " + i); assertTrue(f.createNewFile()); diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/DbTasksTest.java b/core/src/test/java/de/danoeh/antennapod/core/storage/DbTasksTest.java index 9e3dca0f7..0d98ba294 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/storage/DbTasksTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/storage/DbTasksTest.java @@ -197,6 +197,38 @@ public class DbTasksTest { assertEquals(8, feedFromDB.getItems().size()); // 10 - 2 = 8 items } + @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); + assertEquals(10, newFeed.getItems().size()); // id 1-duplicate replaces because the stream url is the same + + Feed feedFromDB = DBReader.getFeed(newFeed.getId()); + assertEquals(10, feedFromDB.getItems().size()); // id1-duplicate should override id 1 + + FeedItem updatedItem = feedFromDB.getItemAtIndex(9); + assertEquals("item 0 duplicate", updatedItem.getTitle()); + assertEquals("id 0-duplicate", updatedItem.getItemIdentifier()); // Should use the new ID for sync etc + } + + @SuppressWarnings("SameParameterValue") private void updatedFeedTest(final Feed newFeed, long feedID, List<Long> itemIDs, int numItemsOld, int numItemsNew) { @@ -285,7 +317,7 @@ public class DbTasksTest { if (numFeedItems > 0) { List<FeedItem> items = new ArrayList<>(numFeedItems); for (int i = 1; i <= numFeedItems; i++) { - FeedItem item = new FeedItem(0, "item " + i + " of " + title, "id", "link", + FeedItem item = new FeedItem(0, "item " + i + " of " + title, "id" + title + i, "link", new Date(), FeedItem.UNPLAYED, feed); items.add(item); } |