use journal::types::{Experience, Ingestion, Unit}; pub fn format_experience_title(experience: &Experience) -> String { format!("{}: {}", experience.title, experience.creation_time) } pub fn format_ingestion_time(ingestion: &Ingestion) -> String { ingestion.ingestion_time.format("%a %I:%M %p").to_string() } pub fn format_ingestion_roa(ingestion: &Ingestion, unit: &Unit) -> String { if let Unit::Custom { id: _id, unit } = unit { format!("{:?} ({})", ingestion.roa, &unit.as_ref().unwrap().name) } else { format!("{:?}", ingestion.roa) } } #[cfg(test)] mod tests { use chrono::{TimeZone, Utc}; use journal::types::{AdministrationRoute, CustomUnit}; use super::*; #[test] fn format_experience_title() { let result = super::format_experience_title(&Experience { title: "Title".to_string(), creation_time: Utc.timestamp_millis_opt(0).unwrap(), ..Experience::default() }); assert_eq!(result, "Title: 1970-01-01 00:00:00 UTC"); } #[test] fn format_ingestion_time() { let result = super::format_ingestion_time(&Ingestion { creation_time: Utc.timestamp_millis_opt(0).unwrap(), ..Ingestion::default() }); assert_eq!(result, "Thu 12:00 AM"); } #[test] fn format_ingestion_roa() { let result = super::format_ingestion_roa( &Ingestion { roa: AdministrationRoute::Oral, ..Ingestion::default() }, &Unit::default(), ); assert_eq!(result, "Oral"); } #[test] fn format_ingestion_roa_with_custom_unit() { let result = super::format_ingestion_roa( &Ingestion { roa: AdministrationRoute::Oral, ..Ingestion::default() }, &Unit::Custom { id: 0, unit: Some(CustomUnit { name: "32mg/ml".to_string(), ..CustomUnit::default() }), }, ); assert_eq!(result, "Oral (32mg/ml)"); } }