1pub mod constants;
24pub mod utils;
25
26pub use constants::*;
27pub use utils::*;
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32
33 #[test]
34 fn test_re_exported_constants() {
35 assert_eq!(DATABASE_FILENAME, "main.sqlite");
37 assert_eq!(DATABASE_DIR, "Things Database.thingsdatabase");
38 assert_eq!(THINGS_CONTAINER, "JLMPQHK8H4.com.culturedcode.Things3");
39 assert_eq!(DEFAULT_QUERY_LIMIT, 100);
40 assert_eq!(MAX_QUERY_LIMIT, 1000);
41 assert_eq!(DEFAULT_MCP_PORT, 3000);
42
43 assert_eq!(DATE_FORMATS.len(), 3);
45 assert_eq!(DATETIME_FORMATS.len(), 3);
46
47 assert_eq!(DATE_FORMATS[0], "%Y-%m-%d");
49 assert_eq!(DATETIME_FORMATS[0], "%Y-%m-%d %H:%M:%S");
50 }
51
52 #[test]
53 fn test_re_exported_functions() {
54 use chrono::{NaiveDate, Utc};
56
57 let date = NaiveDate::from_ymd_opt(2023, 12, 25).unwrap();
59 let formatted = format_date(&date);
60 assert_eq!(formatted, "2023-12-25");
61
62 let dt = Utc::now();
64 let formatted = format_datetime(&dt);
65 assert!(formatted.contains("UTC"));
66
67 let result = parse_date("2023-12-25");
69 assert!(result.is_ok());
70
71 assert!(is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
73 assert!(!is_valid_uuid("invalid-uuid"));
74
75 assert_eq!(truncate_string("hello world", 5), "he...");
77 assert_eq!(truncate_string("hi", 10), "hi");
78 }
79
80 #[test]
81 fn test_module_accessibility() {
82 assert_eq!(constants::DATABASE_FILENAME, "main.sqlite");
86 assert_eq!(constants::DEFAULT_QUERY_LIMIT, 100);
87
88 let result = utils::truncate_string("hello world", 5);
90 assert_eq!(result, "he...");
91
92 assert!(utils::is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
94 assert_eq!(utils::truncate_string("test", 2), "...");
95 }
96
97 #[test]
98 fn test_crate_level_imports() {
99 use crate::{DATABASE_FILENAME, DATE_FORMATS, DEFAULT_QUERY_LIMIT};
104 use crate::{format_date, is_valid_uuid, truncate_string};
106
107 assert_eq!(DATABASE_FILENAME, "main.sqlite");
108 assert_eq!(DEFAULT_QUERY_LIMIT, 100);
109 assert_eq!(DATE_FORMATS.len(), 3);
110
111 assert!(is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
112 assert_eq!(truncate_string("hello", 3), "...");
113
114 let date = chrono::NaiveDate::from_ymd_opt(2023, 1, 1).unwrap();
115 let formatted = format_date(&date);
116 assert_eq!(formatted, "2023-01-01");
117 }
118
119 #[test]
120 fn test_wildcard_imports() {
121 {
126 use crate::constants::*;
127 assert_eq!(DATABASE_FILENAME, "main.sqlite");
128 assert_eq!(DEFAULT_QUERY_LIMIT, 100);
129 }
130
131 {
132 use crate::utils::*;
133 assert!(is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
134 assert_eq!(truncate_string("test", 2), "...");
135
136 let date = chrono::NaiveDate::from_ymd_opt(2023, 6, 15).unwrap();
137 let formatted = format_date(&date);
138 assert_eq!(formatted, "2023-06-15");
139 }
140 }
141}