codama_nodes/value_nodes/
public_key_value_node.rs1use 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}