Skip to main content

codama_nodes/display_nodes/
enum_variant_display_node.rs

1use crate::EnumVariantDisplayNode;
2
3impl EnumVariantDisplayNode {
4    pub fn new<T>(label: T) -> Self
5    where
6        T: Into<String>,
7    {
8        Self {
9            label: Some(label.into()),
10            ..Default::default()
11        }
12    }
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    #[test]
20    fn new() {
21        let node = EnumVariantDisplayNode::new("Buy");
22        assert_eq!(node.label.as_deref(), Some("Buy"));
23        assert_eq!(node.skip_inner_data, None);
24    }
25
26    #[test]
27    fn default() {
28        let node = EnumVariantDisplayNode::default();
29        assert_eq!(node.label, None);
30        assert_eq!(node.skip_inner_data, None);
31    }
32
33    #[test]
34    fn to_json() {
35        let node = EnumVariantDisplayNode {
36            label: Some("Buy".to_string()),
37            skip_inner_data: Some(true),
38        };
39        let json = serde_json::to_string(&node).unwrap();
40        assert_eq!(
41            json,
42            r#"{"kind":"enumVariantDisplayNode","label":"Buy","skipInnerData":true}"#
43        );
44    }
45
46    #[test]
47    fn from_json() {
48        let json = r#"{"kind":"enumVariantDisplayNode","label":"Buy"}"#;
49        let node: EnumVariantDisplayNode = serde_json::from_str(json).unwrap();
50        assert_eq!(node, EnumVariantDisplayNode::new("Buy"));
51    }
52}