use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ConceptMetadata {
pub concept_id: String,
#[serde(rename = "type")]
pub concept_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resource: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<String>,
}
#[cfg(test)]
mod tests {
use super::ConceptMetadata;
#[test]
fn minimal_metadata_round_trips_with_okf_field_names() {
let json = serde_json::json!({"concept_id": "revenue", "type": "business-glossary"});
let metadata: ConceptMetadata = serde_json::from_value(json.clone()).unwrap();
assert_eq!(metadata.concept_type, "business-glossary");
assert_eq!(serde_json::to_value(metadata).unwrap(), json);
}
}