codama-nodes 0.10.0

Node specifications and helpers for the Codama standard
Documentation
use crate::EnumVariantDisplayNode;

impl EnumVariantDisplayNode {
    pub fn new<T>(label: T) -> Self
    where
        T: Into<String>,
    {
        Self {
            label: Some(label.into()),
            ..Default::default()
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn new() {
        let node = EnumVariantDisplayNode::new("Buy");
        assert_eq!(node.label.as_deref(), Some("Buy"));
        assert_eq!(node.skip_inner_data, None);
    }

    #[test]
    fn default() {
        let node = EnumVariantDisplayNode::default();
        assert_eq!(node.label, None);
        assert_eq!(node.skip_inner_data, None);
    }

    #[test]
    fn to_json() {
        let node = EnumVariantDisplayNode {
            label: Some("Buy".to_string()),
            skip_inner_data: Some(true),
        };
        let json = serde_json::to_string(&node).unwrap();
        assert_eq!(
            json,
            r#"{"kind":"enumVariantDisplayNode","label":"Buy","skipInnerData":true}"#
        );
    }

    #[test]
    fn from_json() {
        let json = r#"{"kind":"enumVariantDisplayNode","label":"Buy"}"#;
        let node: EnumVariantDisplayNode = serde_json::from_str(json).unwrap();
        assert_eq!(node, EnumVariantDisplayNode::new("Buy"));
    }
}