Skip to main content

codama_nodes/value_nodes/
public_key_value_node.rs

1use crate::PublicKeyValueNode;
2
3impl PublicKeyValueNode {
4    pub fn new<T>(public_key: T) -> Self
5    where
6        T: Into<String>,
7    {
8        Self {
9            public_key: public_key.into(),
10            identifier: None,
11        }
12    }
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18    use crate::CamelCaseString;
19
20    #[test]
21    fn new() {
22        let node = PublicKeyValueNode::new("6QTRDBBuSgBomH6h5VoKqrw6XZ1ESd7x2dj7ixHc3LWm");
23        assert_eq!(
24            node.public_key,
25            "6QTRDBBuSgBomH6h5VoKqrw6XZ1ESd7x2dj7ixHc3LWm".to_string()
26        );
27        assert_eq!(node.identifier, None);
28    }
29
30    #[test]
31    fn direct_instantiation() {
32        let node = PublicKeyValueNode {
33            public_key: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA".into(),
34            identifier: Some("spl_token".into()),
35        };
36        assert_eq!(
37            node.public_key,
38            "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA".to_string()
39        );
40        assert_eq!(node.identifier, Some(CamelCaseString::new("splToken")));
41    }
42
43    #[test]
44    fn to_json() {
45        let node = PublicKeyValueNode::new("6QTRDBBuSgBomH6h5VoKqrw6XZ1ESd7x2dj7ixHc3LWm");
46        let json = serde_json::to_string(&node).unwrap();
47        assert_eq!(
48            json,
49            r#"{"kind":"publicKeyValueNode","publicKey":"6QTRDBBuSgBomH6h5VoKqrw6XZ1ESd7x2dj7ixHc3LWm"}"#
50        );
51    }
52
53    #[test]
54    fn from_json() {
55        let json = r#"{"kind":"publicKeyValueNode","publicKey":"6QTRDBBuSgBomH6h5VoKqrw6XZ1ESd7x2dj7ixHc3LWm"}"#;
56        let node: PublicKeyValueNode = serde_json::from_str(json).unwrap();
57        assert_eq!(
58            node,
59            PublicKeyValueNode::new("6QTRDBBuSgBomH6h5VoKqrw6XZ1ESd7x2dj7ixHc3LWm")
60        );
61    }
62}