diff options
author | H. Lehmann <ByteHamster@users.noreply.github.com> | 2019-04-01 00:05:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-01 00:05:55 +0200 |
commit | 56de034c7c6cb419c72b1d4d218b33f74ab5e0d0 (patch) | |
tree | 758f91bb64b5c9aae77bf02097e2f77c7fa57938 /core/src/test/java | |
parent | c6344f5bc0dc29c59ddfd82d3c6458a715091e91 (diff) | |
parent | c589bd2022ff6e53d8b0a95547c966fd7b78e28d (diff) | |
download | AntennaPod-56de034c7c6cb419c72b1d4d218b33f74ab5e0d0.zip |
Merge pull request #3077 from bibz/develop
Validate that the item state is only changed when needed
Diffstat (limited to 'core/src/test/java')
3 files changed, 119 insertions, 0 deletions
diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java index b9cba05b4..857827219 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java @@ -5,6 +5,7 @@ import org.junit.Test; import static de.danoeh.antennapod.core.feed.FeedItemMother.anyFeedItemWithImage; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; public class FeedItemTest { @@ -39,6 +40,39 @@ public class FeedItemTest { assertFeedItemImageWasUpdated(); } + /** + * Test that a played item loses that state after being marked as new. + */ + @Test + public void testMarkPlayedItemAsNew_itemNotPlayed() { + original.setPlayed(true); + original.setNew(); + + assertFalse(original.isPlayed()); + } + + /** + * Test that a new item loses that state after being marked as played. + */ + @Test + public void testMarkNewItemAsPlayed_itemNotNew() { + original.setNew(); + original.setPlayed(true); + + assertFalse(original.isNew()); + } + + /** + * Test that a new item loses that state after being marked as not played. + */ + @Test + public void testMarkNewItemAsNotPlayed_itemNotNew() { + original.setNew(); + original.setPlayed(false); + + assertFalse(original.isNew()); + } + private void setNewFeedItemImageDownloadUrl() { changedFeedItem.setImageUrl("http://example.com/new_picture"); } diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaMother.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaMother.java new file mode 100644 index 000000000..d95b8787c --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaMother.java @@ -0,0 +1,13 @@ +package de.danoeh.antennapod.core.feed; + +class FeedMediaMother { + + private static final String EPISODE_URL = "http://example.com/episode"; + private static final long SIZE = 42; + private static final String MIME_TYPE = "audio/mp3"; + + static FeedMedia anyFeedMedia() { + return new FeedMedia(null, EPISODE_URL, SIZE, MIME_TYPE); + } + +} diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaTest.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaTest.java new file mode 100644 index 000000000..f27a54f84 --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaTest.java @@ -0,0 +1,72 @@ +package de.danoeh.antennapod.core.feed; + +import org.junit.Before; +import org.junit.Test; + +import static de.danoeh.antennapod.core.feed.FeedMediaMother.anyFeedMedia; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class FeedMediaTest { + + private FeedMedia media; + + @Before + public void setUp() { + media = anyFeedMedia(); + } + + /** + * Downloading a media from a not new and not played item should not change the item state. + */ + @Test + public void testDownloadMediaOfNotNewAndNotPlayedItem_unchangedItemState() { + FeedItem item = mock(FeedItem.class); + when(item.isNew()).thenReturn(false); + when(item.isPlayed()).thenReturn(false); + + media.setItem(item); + media.setDownloaded(true); + + verify(item, never()).setNew(); + verify(item, never()).setPlayed(true); + verify(item, never()).setPlayed(false); + } + + /** + * Downloading a media from a played item (thus not new) should not change the item state. + */ + @Test + public void testDownloadMediaOfPlayedItem_unchangedItemState() { + FeedItem item = mock(FeedItem.class); + when(item.isNew()).thenReturn(false); + when(item.isPlayed()).thenReturn(true); + + media.setItem(item); + media.setDownloaded(true); + + verify(item, never()).setNew(); + verify(item, never()).setPlayed(true); + verify(item, never()).setPlayed(false); + } + + /** + * Downloading a media from a new item (thus not played) should change the item to not played. + */ + @Test + public void testDownloadMediaOfNewItem_changedToNotPlayedItem() { + FeedItem item = mock(FeedItem.class); + when(item.isNew()).thenReturn(true); + when(item.isPlayed()).thenReturn(false); + + media.setItem(item); + media.setDownloaded(true); + + verify(item).setPlayed(false); + verify(item, never()).setNew(); + verify(item, never()).setPlayed(true); + } + +} |