in crates/iceberg/src/spec/name_mapping/mod.rs [257:361]
fn test_json_name_mapping_serialization() {
let name_mapping = NameMapping {
root: vec![
MappedField {
field_id: None,
names: vec!["foo".to_string()],
fields: vec![],
},
MappedField {
field_id: Some(2),
names: vec!["bar".to_string()],
fields: vec![],
},
MappedField {
field_id: Some(3),
names: vec!["baz".to_string()],
fields: vec![],
},
MappedField {
field_id: Some(4),
names: vec!["qux".to_string()],
fields: vec![MappedField {
field_id: Some(5),
names: vec!["element".to_string()],
fields: vec![],
}
.into()],
},
MappedField {
field_id: Some(6),
names: vec!["quux".to_string()],
fields: vec![
MappedField {
field_id: Some(7),
names: vec!["key".to_string()],
fields: vec![],
}
.into(),
MappedField {
field_id: Some(8),
names: vec!["value".to_string()],
fields: vec![
MappedField {
field_id: Some(9),
names: vec!["key".to_string()],
fields: vec![],
}
.into(),
MappedField {
field_id: Some(10),
names: vec!["value".to_string()],
fields: vec![],
}
.into(),
],
}
.into(),
],
},
MappedField {
field_id: Some(11),
names: vec!["location".to_string()],
fields: vec![MappedField {
field_id: Some(12),
names: vec!["element".to_string()],
fields: vec![
MappedField {
field_id: Some(13),
names: vec!["latitude".to_string()],
fields: vec![],
}
.into(),
MappedField {
field_id: Some(14),
names: vec!["longitude".to_string()],
fields: vec![],
}
.into(),
],
}
.into()],
},
MappedField {
field_id: Some(15),
names: vec!["person".to_string()],
fields: vec![
MappedField {
field_id: Some(16),
names: vec!["name".to_string()],
fields: vec![],
}
.into(),
MappedField {
field_id: Some(17),
names: vec!["age".to_string()],
fields: vec![],
}
.into(),
],
},
],
};
let expected = r#"[{"names":["foo"]},{"field-id":2,"names":["bar"]},{"field-id":3,"names":["baz"]},{"field-id":4,"names":["qux"],"fields":[{"field-id":5,"names":["element"]}]},{"field-id":6,"names":["quux"],"fields":[{"field-id":7,"names":["key"]},{"field-id":8,"names":["value"],"fields":[{"field-id":9,"names":["key"]},{"field-id":10,"names":["value"]}]}]},{"field-id":11,"names":["location"],"fields":[{"field-id":12,"names":["element"],"fields":[{"field-id":13,"names":["latitude"]},{"field-id":14,"names":["longitude"]}]}]},{"field-id":15,"names":["person"],"fields":[{"field-id":16,"names":["name"]},{"field-id":17,"names":["age"]}]}]"#;
assert_eq!(serde_json::to_string(&name_mapping).unwrap(), expected);
}