summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/build.gradle1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java2
-rw-r--r--core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java34
-rw-r--r--core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaMother.java13
-rw-r--r--core/src/test/java/de/danoeh/antennapod/core/feed/FeedMediaTest.java72
5 files changed, 121 insertions, 1 deletions
diff --git a/core/build.gradle b/core/build.gradle
index c68b666d0..65dfa1a7b 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -79,6 +79,7 @@ dependencies {
}
testImplementation 'junit:junit:4.12'
+ testImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
index 84346e2d4..f3a43e2d0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
@@ -594,7 +594,7 @@ public class FeedMedia extends FeedFile implements Playable {
@Override
public void setDownloaded(boolean downloaded) {
super.setDownloaded(downloaded);
- if(item != null && downloaded && !item.isPlayed()) {
+ if(item != null && downloaded && item.isNew()) {
item.setPlayed(false);
}
}
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);
+ }
+
+}