#[cfg(feature = "dependencies")]
use serde::{Deserialize, Serialize};
#[cfg(feature = "dependencies")]
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MetadataComponentDependency {
#[serde(rename = "MetadataComponentId")]
pub metadata_component_id: Option<String>,
#[serde(rename = "MetadataComponentName")]
pub metadata_component_name: Option<String>,
#[serde(rename = "MetadataComponentNamespace")]
pub metadata_component_namespace: Option<String>,
#[serde(rename = "MetadataComponentType")]
pub metadata_component_type: Option<String>,
#[serde(rename = "RefMetadataComponentId")]
pub ref_metadata_component_id: Option<String>,
#[serde(rename = "RefMetadataComponentName")]
pub ref_metadata_component_name: Option<String>,
#[serde(rename = "RefMetadataComponentNamespace")]
pub ref_metadata_component_namespace: Option<String>,
#[serde(rename = "RefMetadataComponentType")]
pub ref_metadata_component_type: Option<String>,
}
#[cfg(test)]
#[cfg(feature = "dependencies")]
mod tests {
use super::*;
#[test]
fn test_metadata_component_dependency_deser() {
let json = r#"{
"MetadataComponentId": "01pxx00000000001AAA",
"MetadataComponentName": "MyClass",
"MetadataComponentNamespace": null,
"MetadataComponentType": "ApexClass",
"RefMetadataComponentId": "01pxx00000000002AAA",
"RefMetadataComponentName": "ReferencedClass",
"RefMetadataComponentNamespace": null,
"RefMetadataComponentType": "ApexClass"
}"#;
let dep: MetadataComponentDependency = serde_json::from_str(json).unwrap();
assert_eq!(
dep.metadata_component_id,
Some("01pxx00000000001AAA".to_string())
);
assert_eq!(dep.metadata_component_name, Some("MyClass".to_string()));
assert_eq!(dep.metadata_component_type, Some("ApexClass".to_string()));
assert_eq!(
dep.ref_metadata_component_id,
Some("01pxx00000000002AAA".to_string())
);
assert_eq!(
dep.ref_metadata_component_name,
Some("ReferencedClass".to_string())
);
assert_eq!(
dep.ref_metadata_component_type,
Some("ApexClass".to_string())
);
}
#[test]
fn test_metadata_component_dependency_ser() {
let dep = MetadataComponentDependency {
metadata_component_id: Some("01pxx00000000001AAA".to_string()),
metadata_component_name: Some("MyClass".to_string()),
metadata_component_namespace: None,
metadata_component_type: Some("ApexClass".to_string()),
ref_metadata_component_id: Some("01pxx00000000002AAA".to_string()),
ref_metadata_component_name: Some("ReferencedClass".to_string()),
ref_metadata_component_namespace: None,
ref_metadata_component_type: Some("ApexClass".to_string()),
};
let json = serde_json::to_string(&dep).unwrap();
assert!(json.contains("MetadataComponentId"));
assert!(json.contains("01pxx00000000001AAA"));
assert!(json.contains("RefMetadataComponentType"));
}
}