Skip to content

Commit 379dff7

Browse files
committed
add tests for parse_datetime
1 parent 55a8595 commit 379dff7

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

src/util/datetime.rs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,72 @@ pub fn format_datetime(dt: &NaiveDateTime) -> String {
149149
pub fn format_date(date: &NaiveDate) -> String {
150150
format!("{}", date.format("%Y-%m-%d"))
151151
}
152+
153+
#[cfg(test)]
154+
mod tests {
155+
use super::*;
156+
use chrono::{Local, NaiveDate};
157+
158+
#[test]
159+
fn test_parse_today() {
160+
let result = parse_datetime("today").unwrap();
161+
let now = Local::now().date_naive();
162+
let start = now.and_hms_opt(0, 0, 0).unwrap();
163+
let finish = now.and_hms_opt(23, 59, 59).unwrap();
164+
165+
assert_eq!(result.0, start);
166+
assert_eq!(result.1, finish);
167+
}
168+
169+
#[test]
170+
fn test_parse_yesterday() {
171+
let result = parse_datetime("yesterday").unwrap();
172+
let yesterday = Local::now().date_naive() - chrono::Duration::days(1);
173+
let start = yesterday.and_hms_opt(0, 0, 0).unwrap();
174+
let finish = yesterday.and_hms_opt(23, 59, 59).unwrap();
175+
176+
assert_eq!(result.0, start);
177+
assert_eq!(result.1, finish);
178+
}
179+
180+
#[test]
181+
fn test_parse_specific_date() {
182+
let result = parse_datetime("2023-12-11").unwrap();
183+
let date = NaiveDate::from_ymd_opt(2023, 12, 11).unwrap();
184+
let start = date.and_hms_opt(0, 0, 0).unwrap();
185+
let finish = date.and_hms_opt(23, 59, 59).unwrap();
186+
187+
assert_eq!(result.0, start);
188+
assert_eq!(result.1, finish);
189+
}
190+
191+
#[test]
192+
fn test_parse_specific_datetime() {
193+
let result = parse_datetime("2023-12-11 14:30:45").unwrap();
194+
let date = NaiveDate::from_ymd_opt(2023, 12, 11).unwrap();
195+
let start = date.and_hms_opt(14, 30, 45).unwrap();
196+
let finish = start;
197+
198+
assert_eq!(result.0, start);
199+
assert_eq!(result.1, finish);
200+
}
201+
202+
#[test]
203+
fn test_invalid_format() {
204+
let result = parse_datetime("invalid-date");
205+
206+
assert!(result.is_err());
207+
assert_eq!(result.unwrap_err(), "Error parsing date/time value: invalid-date");
208+
}
209+
210+
#[test]
211+
fn test_partial_date_parsing() {
212+
let result = parse_datetime("2023-12-11 14:30").unwrap();
213+
let date = NaiveDate::from_ymd_opt(2023, 12, 11).unwrap();
214+
let start = date.and_hms_opt(14, 30, 0).unwrap();
215+
let finish = date.and_hms_opt(14, 30, 59).unwrap();
216+
217+
assert_eq!(result.0, start);
218+
assert_eq!(result.1, finish);
219+
}
220+
}

0 commit comments

Comments
 (0)