diff --git a/hammond-data/src/parser.rs b/hammond-data/src/parser.rs index 0bfa5e9..9f9299b 100644 --- a/hammond-data/src/parser.rs +++ b/hammond-data/src/parser.rs @@ -123,10 +123,70 @@ fn parse_itunes_duration(item: &Item) -> Option { mod tests { use std::fs::File; use std::io::BufReader; - use rss::Channel; + use rss; use super::*; + #[test] + fn test_itunes_duration() { + use rss::extension::itunes::ITunesItemExtensionBuilder; + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("3370".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(3370)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("6:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(370)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("56:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(3370)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("1:56:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(6970)); + + // Input is a String + let extension = ITunesItemExtensionBuilder::default() + .duration(Some("01:56:10".into())) + .build() + .unwrap(); + let item = rss::ItemBuilder::default() + .itunes_ext(Some(extension)) + .build() + .unwrap(); + assert_eq!(parse_itunes_duration(&item), Some(6970)); + } + #[test] fn test_new_podcast_intercepted() { let file = File::open("tests/feeds/Intercepted.xml").unwrap();