khive-storage 0.12.0

Storage capability contracts and backend-neutral request context.
Documentation
use super::*;

#[test]
fn event_filter_target_id_roundtrips_and_defaults_for_legacy_frames() {
    let target = Uuid::new_v4();
    let filter = EventFilter {
        target_id: Some(target),
        ..EventFilter::default()
    };
    let mut wire = serde_json::to_value(&filter).unwrap();
    assert_eq!(wire["target_id"], target.to_string());
    let decoded: EventFilter = serde_json::from_value(wire.clone()).unwrap();
    assert_eq!(decoded.target_id, Some(target));
    wire.as_object_mut().unwrap().remove("target_id");
    let legacy: EventFilter = serde_json::from_value(wire).unwrap();
    assert_eq!(legacy.target_id, None);
}

#[test]
fn event_page_window_budget_stop_roundtrips_and_defaults_when_absent() {
    let stop = EventOrderKey {
        created_at_us: 7,
        physical_id: Uuid::from_u128(9).to_string(),
    };
    let window = EventPageWindow {
        rows: Vec::new(),
        budget_stop: Some(stop.clone()),
    };
    let mut wire = serde_json::to_value(&window).unwrap();
    let decoded: EventPageWindow = serde_json::from_value(wire.clone()).unwrap();
    assert_eq!(decoded.budget_stop, Some(stop));
    wire.as_object_mut().unwrap().remove("budget_stop");
    let legacy: EventPageWindow = serde_json::from_value(wire).unwrap();
    assert_eq!(legacy.budget_stop, None);
}