use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct EventStarted {
pub result_id: String,
pub request_id: String,
pub exec_id: String,
pub pc_id: String,
pub started_at: DateTime<Utc>,
pub manifest_id: String,
pub version: String,
}
#[cfg(test)]
mod tests {
use super::*;
use chrono::TimeZone;
#[test]
fn event_started_round_trips_through_json() {
let t = Utc.with_ymd_and_hms(2026, 5, 20, 12, 0, 0).unwrap();
let e = EventStarted {
result_id: "result-uuid-1".into(),
request_id: "req-1".into(),
exec_id: "exec-uuid-1".into(),
pc_id: "minipc".into(),
started_at: t,
manifest_id: "inventory-hw".into(),
version: "1.0.0".into(),
};
let json = serde_json::to_string(&e).unwrap();
let back: EventStarted = serde_json::from_str(&json).unwrap();
assert_eq!(back.result_id, e.result_id);
assert_eq!(back.request_id, e.request_id);
assert_eq!(back.exec_id, e.exec_id);
assert_eq!(back.pc_id, e.pc_id);
assert_eq!(back.started_at, t);
assert_eq!(back.manifest_id, e.manifest_id);
assert_eq!(back.version, e.version);
}
}