pub mod constants;
pub mod utils;
pub use constants::{
DATABASE_DIR, DATABASE_FILENAME, DATETIME_FORMATS, DATE_FORMATS, DEFAULT_MCP_PORT,
DEFAULT_QUERY_LIMIT, MAX_QUERY_LIMIT, THINGS_CONTAINER,
};
pub use utils::{format_date, format_datetime, is_valid_uuid, parse_date, truncate_string};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_re_exported_constants() {
assert_eq!(DATABASE_FILENAME, "main.sqlite");
assert_eq!(DATABASE_DIR, "Things Database.thingsdatabase");
assert_eq!(THINGS_CONTAINER, "JLMPQHK8H4.com.culturedcode.Things3");
assert_eq!(DEFAULT_QUERY_LIMIT, 100);
assert_eq!(MAX_QUERY_LIMIT, 1000);
assert_eq!(DEFAULT_MCP_PORT, 3000);
assert_eq!(DATE_FORMATS.len(), 3);
assert_eq!(DATETIME_FORMATS.len(), 3);
assert_eq!(DATE_FORMATS[0], "%Y-%m-%d");
assert_eq!(DATETIME_FORMATS[0], "%Y-%m-%d %H:%M:%S");
}
#[test]
fn test_re_exported_functions() {
use chrono::{NaiveDate, Utc};
let date = NaiveDate::from_ymd_opt(2023, 12, 25).unwrap();
let formatted = format_date(&date);
assert_eq!(formatted, "2023-12-25");
let dt = Utc::now();
let formatted = format_datetime(&dt);
assert!(formatted.contains("UTC"));
let result = parse_date("2023-12-25");
assert!(result.is_ok());
assert!(is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
assert!(!is_valid_uuid("invalid-uuid"));
assert_eq!(truncate_string("hello world", 5), "he...");
assert_eq!(truncate_string("hi", 10), "hi");
}
#[test]
fn test_module_accessibility() {
assert_eq!(constants::DATABASE_FILENAME, "main.sqlite");
assert_eq!(constants::DEFAULT_QUERY_LIMIT, 100);
let result = utils::truncate_string("hello world", 5);
assert_eq!(result, "he...");
assert!(utils::is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
assert_eq!(utils::truncate_string("test", 2), "...");
}
#[test]
fn test_crate_level_imports() {
use crate::{DATABASE_FILENAME, DATE_FORMATS, DEFAULT_QUERY_LIMIT};
use crate::{format_date, is_valid_uuid, truncate_string};
assert_eq!(DATABASE_FILENAME, "main.sqlite");
assert_eq!(DEFAULT_QUERY_LIMIT, 100);
assert_eq!(DATE_FORMATS.len(), 3);
assert!(is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
assert_eq!(truncate_string("hello", 3), "...");
let date = chrono::NaiveDate::from_ymd_opt(2023, 1, 1).unwrap();
let formatted = format_date(&date);
assert_eq!(formatted, "2023-01-01");
}
#[test]
fn test_wildcard_imports() {
{
use crate::constants::*;
assert_eq!(DATABASE_FILENAME, "main.sqlite");
assert_eq!(DEFAULT_QUERY_LIMIT, 100);
}
{
use crate::utils::*;
assert!(is_valid_uuid("550e8400-e29b-41d4-a716-446655440000"));
assert_eq!(truncate_string("test", 2), "...");
let date = chrono::NaiveDate::from_ymd_opt(2023, 6, 15).unwrap();
let formatted = format_date(&date);
assert_eq!(formatted, "2023-06-15");
}
}
}