From 2bbc8c3e1092e978fefeb1736d9cb24bf6a860ae Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Tue, 29 Sep 2020 22:18:56 +0200 Subject: [PATCH] Add test for RSS2 media:group element --- .../localfeed/rss2/rss_items_media_group.xml | 30 +++++++++++++++++++ .../localfeed/rss2/RSS2ItemsAdapterTest.kt | 8 +++++ .../api/localfeed/rss2/RSS2ItemsAdapter.kt | 15 ++++++---- 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 api/src/androidTest/assets/localfeed/rss2/rss_items_media_group.xml diff --git a/api/src/androidTest/assets/localfeed/rss2/rss_items_media_group.xml b/api/src/androidTest/assets/localfeed/rss2/rss_items_media_group.xml new file mode 100644 index 00000000..39f73f50 --- /dev/null +++ b/api/src/androidTest/assets/localfeed/rss2/rss_items_media_group.xml @@ -0,0 +1,30 @@ + + + + + title + link + + 2020-08-05T14:03:48Z + + + + + + + guid + + + + + + + image2 title + + + + + + \ No newline at end of file diff --git a/api/src/androidTest/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapterTest.kt b/api/src/androidTest/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapterTest.kt index 0c06a30e..3894db35 100644 --- a/api/src/androidTest/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapterTest.kt +++ b/api/src/androidTest/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapterTest.kt @@ -78,4 +78,12 @@ class RSS2ItemsAdapterTest { assertEquals(item.imageLink, "https://image2.jpg") } + + @Test + fun mediaGroupTest() { + val stream = context.resources.assets.open("localfeed/rss2/rss_items_media_group.xml") + val item = adapter.fromXml(stream).first() + + assertEquals(item.imageLink, "https://image1.jpg") + } } \ No newline at end of file diff --git a/api/src/main/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapter.kt b/api/src/main/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapter.kt index 9ecc01fe..5e8d2219 100644 --- a/api/src/main/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapter.kt +++ b/api/src/main/java/com/readrops/api/localfeed/rss2/RSS2ItemsAdapter.kt @@ -35,11 +35,7 @@ class RSS2ItemsAdapter : XmlAdapter> { "content:encoded" -> content = nullableTextRecursively() "enclosure" -> parseEnclosure(this, enclosures) "media:content" -> parseMediaContent(this, mediaContents) - "media:group" -> allChildrenAutoIgnore("content") { - when (tagName) { - "media:content" -> parseMediaContent(this, mediaContents) - } - } + "media:group" -> parseMediaGroup(this, mediaContents) else -> skipContents() // for example media:description } } @@ -79,6 +75,15 @@ class RSS2ItemsAdapter : XmlAdapter> { konsume.skipContents() // ignore media content sub elements } + private fun parseMediaGroup(konsume: Konsumer, mediaContents: MutableList) { + konsume.allChildrenAutoIgnore("content") { + when (tagName) { + "media:content" -> parseMediaContent(this, mediaContents) + else -> skipContents() + } + } + } + private fun validateItem(item: Item) { when { item.title == null -> throw ParseException("Item title is required")