domain: add cross-cutting value objects (SystemId, DateTimeStamp, Checksum, StructuredData)

This commit is contained in:
2026-05-31 03:16:28 +02:00
parent f9cb142c3b
commit 3571c94bec
28 changed files with 320 additions and 122 deletions

View File

@@ -0,0 +1,30 @@
use chrono::Utc;
use domain::value_objects::DateTimeStamp;
#[test]
fn now_is_recent() {
let before = Utc::now();
let ts = DateTimeStamp::now();
let after = Utc::now();
assert!(*ts.as_datetime() >= before);
assert!(*ts.as_datetime() <= after);
}
#[test]
fn ordering() {
let a = DateTimeStamp::from_datetime(
chrono::DateTime::parse_from_rfc3339("2024-01-01T00:00:00Z").unwrap().into(),
);
let b = DateTimeStamp::from_datetime(
chrono::DateTime::parse_from_rfc3339("2025-01-01T00:00:00Z").unwrap().into(),
);
assert!(a < b);
}
#[test]
fn serde_roundtrip() {
let ts = DateTimeStamp::now();
let json = serde_json::to_string(&ts).unwrap();
let back: DateTimeStamp = serde_json::from_str(&json).unwrap();
assert_eq!(ts, back);
}