diff --git a/src/feeds.rs b/src/feeds.rs index 6131391..e1c9c79 100644 --- a/src/feeds.rs +++ b/src/feeds.rs @@ -293,3 +293,31 @@ pub async fn get_feed( categorization, })) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_feed_new() { + let name = "Test Feed".to_string(); + let url = Url::parse("https://example.com/feed.xml").unwrap(); + let user_id = Uuid::new_v4(); + + let feed = Feed::new(name.clone(), url.clone(), user_id); + + assert_eq!(feed.name, name); + assert_eq!(feed.url, url); + assert_eq!(feed.user_id, user_id); + assert_eq!(feed.categorization, Vec::::new()); + assert_eq!(feed.last_checked_time, chrono::DateTime::UNIX_EPOCH); + + // Feed ID should be a valid UUID + assert!(feed.feed_id.to_string().len() == 36); // UUID string length + + // Added time should be recent (within last few seconds) + let now = chrono::Utc::now(); + let time_diff = now - feed.added_time; + assert!(time_diff.num_seconds().abs() < 5); // Allow 5 second difference + } +}