versa_semval 0.7.2

Cross-platform module for semantic validation of Versa data
Documentation
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);
  }
}