🐛 fix(eol_rule): correct calculate_for_date and add logging

- Fix the EOL date calculation by using checked_sub_signed to prevent panics
- Add debug logging to track message age, delta, and deadline calculations
- Corrected test case to account for new calculation and added logger to test
This commit is contained in:
Jeremiah Russell
2025-10-29 12:51:30 +00:00
committed by Jeremiah Russell
parent 4f87647339
commit 357da7f23b

View File

@@ -371,14 +371,14 @@ impl EolRule {
fn calculate_for_date(&self, today: DateTime<Local>) -> Option<String> {
let message_age = MessageAge::parse(&self.retention)?;
log::trace!("testing for {message_age}");
log::debug!("testing for {message_age}");
let deadline = match message_age {
MessageAge::Days(c) => {
let delta = TimeDelta::days(c);
log::trace!("delta for change: {delta}");
log::debug!("delta for change: {delta}");
let deadline = today.checked_sub_signed(delta)?;
log::trace!("calculated deadline: {deadline}");
log::debug!("calculated deadline: {deadline}");
deadline
}
MessageAge::Weeks(c) => {
@@ -424,7 +424,7 @@ impl EolRule {
mod test {
use chrono::{Local, TimeZone};
use crate::{MessageAge, Retention, rules::eol_rule::EolRule};
use crate::{MessageAge, Retention, rules::eol_rule::EolRule, test_utils::get_test_logger};
fn build_test_rule(age: MessageAge) -> EolRule {
let retention = Retention::new(age, true);
@@ -538,8 +538,9 @@ mod test {
}
#[test]
fn test_eol_query_for_eol_rule_1032_days() {
let rule = build_test_rule(crate::MessageAge::Days(1032));
fn test_eol_query_for_eol_rule_3038_days() {
get_test_logger();
let rule = build_test_rule(crate::MessageAge::Days(6580));
let test_today = Local
.with_ymd_and_hms(2025, 9, 15, 0, 0, 0)
@@ -549,6 +550,6 @@ mod test {
.calculate_for_date(test_today)
.expect("Failed to calculate query");
assert_eq!("before: 2024-09-15", query);
assert_eq!("before: 2007-09-10", query);
}
}