aboutsummaryrefslogtreecommitdiffstats
path: root/src/meetup_rss.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/meetup_rss.rs')
-rw-r--r--src/meetup_rss.rs147
1 files changed, 147 insertions, 0 deletions
diff --git a/src/meetup_rss.rs b/src/meetup_rss.rs
index fe7b6df..3445a1a 100644
--- a/src/meetup_rss.rs
+++ b/src/meetup_rss.rs
@@ -35,9 +35,70 @@ pub fn write(channel: Channel) -> Result<()> {
}
+fn description_header(event: &Event) -> String {
+ // let when = if let Some(date) = event.local_date &&
+ // Some(time) = event.local_time {
+ // format!("When: {} {}", date, time)
+ // } else {
+ // ""
+ // };
+
+ let when = if event.local_date.is_some() &&
+ event.local_time.is_some() {
+ format!(
+ "When: {} {}",
+ event.local_date.clone().unwrap_or("".to_owned()),
+ event.local_time.clone().unwrap_or("".to_owned()),
+ )
+ } else {
+ "".to_owned()
+ };
+
+ let place = if let Some(venue) = event.venue.clone() {
+ format!(
+ "Where: {}, {}, {}, {}",
+ venue.name,
+ venue.address_1,
+ venue.city,
+ venue.localized_country_name,
+ )
+ } else {
+ "".to_owned()
+ };
+
+ // format!("{}\n{}", when, place)
+ // [when, place].join("\n")
+
+ let header = when;
+
+ let header = if !header.is_empty() && !place.is_empty() {
+ format!("{}\n", header)
+ } else {
+ header
+ };
+
+ let header = format!("{}{}", header, place);
+
+ header
+
+
+// format!(
+// "When: {} {}
+// Where: {}, {}, {}, {}",
+// event.local_date,
+// event.local_time,
+// event.venue.name,
+// event.venue.address_1,
+// event.venue.city,
+// event.venue.localized_country_name,
+// )
+}
+
+
#[cfg(test)]
mod tests {
use super::*;
+ use meetup::event::Venue;
#[test]
fn test_generate_builds_a_channel_of_events() {
@@ -64,4 +125,90 @@ mod tests {
item.description().unwrap()
);
}
+
+ #[test]
+ fn description_header_makes_a_string_of_time_and_venue() {
+ let event = Event {
+ name: "Fairies Story 3 Release Party".to_owned(),
+ description: Some("Empty".to_owned()),
+ link: "http://example.com".to_owned(),
+ local_date: Some("2018-04-15".to_owned()),
+ local_time: Some("19:00".to_owned()),
+ venue: Some(Venue {
+ name: "Passage".to_owned(),
+ address_1: "99 Passage des Panoramas".to_owned(),
+ city: "Paris".to_owned(),
+ localized_country_name: "France".to_owned(),
+ }),
+ };
+
+ let header = description_header(&event);
+
+ assert_eq!(
+ "When: 2018-04-15 19:00
+Where: Passage, 99 Passage des Panoramas, Paris, France",
+ header
+ );
+ }
+
+ #[test]
+ fn description_header_excludes_when_if_no_date_present() {
+ let header = description_header(&Event {
+ name: "Fairies Story 3 Release Party".to_owned(),
+ description: Some("Empty".to_owned()),
+ link: "http://example.com".to_owned(),
+ local_date: None,
+ local_time: Some("19:00".to_owned()),
+ venue: Some(Venue {
+ name: "Passage".to_owned(),
+ address_1: "99 Passage des Panoramas".to_owned(),
+ city: "Paris".to_owned(),
+ localized_country_name: "France".to_owned(),
+ }),
+ });
+
+ assert_eq!(
+ "Where: Passage, 99 Passage des Panoramas, Paris, France",
+ header
+ );
+ }
+
+ #[test]
+ fn description_header_excludes_when_if_no_time_present() {
+ let header = description_header(&Event {
+ name: "Fairies Story 3 Release Party".to_owned(),
+ description: Some("Empty".to_owned()),
+ link: "http://example.com".to_owned(),
+ local_date: Some("2018-04-15".to_owned()),
+ local_time: None,
+ venue: Some(Venue {
+ name: "Passage".to_owned(),
+ address_1: "99 Passage des Panoramas".to_owned(),
+ city: "Paris".to_owned(),
+ localized_country_name: "France".to_owned(),
+ }),
+ });
+
+ assert_eq!(
+ "Where: Passage, 99 Passage des Panoramas, Paris, France",
+ header
+ );
+ }
+
+ #[test]
+ fn description_header_excludes_where_if_no_venue_present() {
+ let header = description_header(&Event {
+ name: "Fairies Story 3 Release Party".to_owned(),
+ description: Some("Empty".to_owned()),
+ link: "http://example.com".to_owned(),
+ local_date: Some("2018-04-15".to_owned()),
+ local_time: Some("19:00".to_owned()),
+ venue: None,
+ });
+
+ assert_eq!(
+ "When: 2018-04-15 19:00",
+ header
+ );
+ }
}