yerba 0.1.0

YAML Editing and Refactoring with Better Accuracy
Documentation
use yerba::Document;

#[test]
fn test_sort_keys() {
  let yaml = "database:\n  host: localhost\n  port: 5432\n  name: myapp\n  pool: 10\n";
  let mut document = Document::parse(yaml).unwrap();

  document
    .sort_keys("database", &["name", "host", "port", "pool"])
    .unwrap();

  assert_eq!(
    document.to_string(),
    "database:\n  name: myapp\n  host: localhost\n  port: 5432\n  pool: 10\n"
  );
}

#[test]
fn test_sort_keys_partial_order() {
  let yaml = "database:\n  host: localhost\n  port: 5432\n  name: myapp\n  pool: 10\n";
  let mut document = Document::parse(yaml).unwrap();

  document.sort_keys("database", &["name", "pool"]).unwrap();

  assert_eq!(
    document.to_string(),
    "database:\n  name: myapp\n  pool: 10\n  host: localhost\n  port: 5432\n"
  );
}

#[test]
fn test_sort_keys_with_bracket_path() {
  let yaml = "- name: first\n  id: 1\n- name: second\n  id: 2\n";
  let mut document = Document::parse(yaml).unwrap();

  document.sort_keys("[]", &["id", "name"]).unwrap();

  assert_eq!(
    document.to_string(),
    "- id: 1\n  name: first\n- id: 2\n  name: second\n"
  );
}

#[test]
fn test_validate_sort_keys_with_bracket_path() {
  let yaml = "- name: first\n  id: 1\n";
  let document = Document::parse(yaml).unwrap();

  assert!(document.validate_sort_keys("[]", &["id", "name"]).is_ok());
  assert!(document.validate_sort_keys("[]", &["id"]).is_err());
}