server: fix date extraction and unit tests
This commit is contained in:
@@ -195,8 +195,16 @@ pub fn extract_calendar_metadata_from_mail(
|
||||
}
|
||||
}
|
||||
if let (Some(sm), Some(em)) = (month_num(start_month), month_num(end_month)) {
|
||||
let current_year = chrono::Local::now().year().to_string();
|
||||
let start = format!("{}{}{}", current_year, sm, format!("{:0>2}", start_day));
|
||||
// If start month is later in calendar year than end month, start is in previous year
|
||||
let sm_num: u32 = sm.parse().unwrap_or(1);
|
||||
let em_num: u32 = em.parse().unwrap_or(1);
|
||||
let end_year = year.parse::<i32>().unwrap_or_else(|_| chrono::Local::now().year());
|
||||
let start_year: i32 = if sm_num > em_num {
|
||||
end_year - 1
|
||||
} else {
|
||||
end_year
|
||||
};
|
||||
let start = format!("{}{}{}", start_year, sm, format!("{:0>2}", start_day));
|
||||
let mut end_date_val = chrono::NaiveDate::parse_from_str(&format!("{}-{}-{}", year, em, format!("{:0>2}", end_day)), "%Y-%m-%d").ok();
|
||||
if let Some(d) = end_date_val.as_mut() {
|
||||
*d = d.succ_opt().unwrap_or(*d);
|
||||
@@ -2307,8 +2315,8 @@ mod tests {
|
||||
Some("calendar-notification@google.com".to_string())
|
||||
);
|
||||
// Dates: from subject, Thu Sep 11 to Fri Jan 30, 2026
|
||||
let current_year = chrono::Local::now().year();
|
||||
assert_eq!(meta.start_date, Some(format!("{}0911", current_year)));
|
||||
// Start date is Sep 11, 2025 (one year before end since Sep > Jan)
|
||||
assert_eq!(meta.start_date, Some("20250911".to_string()));
|
||||
assert_eq!(meta.end_date, Some("20260131".to_string()));
|
||||
}
|
||||
#[test]
|
||||
@@ -2408,8 +2416,8 @@ mod tests {
|
||||
Some("calendar-notification@google.com".to_string())
|
||||
);
|
||||
// Dates: from subject, Thu Sep 11 to Fri Jan 30, 2026
|
||||
let current_year = chrono::Local::now().year();
|
||||
assert_eq!(meta.start_date, Some(format!("{}0911", current_year)));
|
||||
// Start date is Sep 11, 2025 (one year before end since Sep > Jan)
|
||||
assert_eq!(meta.start_date, Some("20250911".to_string()));
|
||||
assert_eq!(meta.end_date, Some("20260131".to_string()));
|
||||
// Debug: print the rendered HTML for inspection
|
||||
if let Some(ref html) = meta.body_html {
|
||||
@@ -2442,8 +2450,8 @@ mod tests {
|
||||
Some("calendar-notification@google.com".to_string())
|
||||
);
|
||||
// Assert that the start and end dates are present
|
||||
let current_year = chrono::Local::now().year();
|
||||
assert_eq!(meta.start_date, Some(format!("{}0911", current_year)));
|
||||
// Start date is Sep 11, 2025 (one year before end since Sep > Jan)
|
||||
assert_eq!(meta.start_date, Some("20250911".to_string()));
|
||||
assert_eq!(meta.end_date, Some("20260131".to_string()));
|
||||
// Assert that the HTML body contains recurrence info
|
||||
if let Some(ref html) = meta.body_html {
|
||||
|
||||
Reference in New Issue
Block a user