pub fn is_null_or_undefined(value: Option<&serde_json::Value>) -> bool {
let Some(val) = value else {
return true;
};
val.is_null() || val.is_object() && val.as_object().unwrap().is_empty()
}
#[cfg(test)]
mod tests {
use super::*;
use pretty_assertions::assert_eq;
#[test]
fn test_is_null_or_undefined_none() {
let value: Option<&serde_json::Value> = None;
assert_eq!(is_null_or_undefined(value), true);
}
#[test]
fn test_is_null_or_undefined_null() {
let value = Some(&serde_json::Value::Null);
assert_eq!(is_null_or_undefined(value), true);
}
#[test]
fn test_is_null_or_undefined_populated_object() {
let rule_valid_serde_json_value = serde_json::json!({
"flight": { "tickets": [] }
});
let value = Some(&rule_valid_serde_json_value);
assert_eq!(is_null_or_undefined(value), false);
}
}