Skip to main content

codama_nodes/contextual_value_nodes/
resolver_value_node.rs

1use crate::{CamelCaseString, Docs, ResolverValueNode};
2
3impl ResolverValueNode {
4    pub fn new<T>(name: T) -> Self
5    where
6        T: Into<CamelCaseString>,
7    {
8        Self {
9            name: name.into(),
10            docs: Docs::default(),
11            depends_on: vec![],
12        }
13    }
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19    use crate::{AccountValueNode, ArgumentValueNode, ResolverDependency};
20
21    #[test]
22    fn new() {
23        let node = ResolverValueNode::new("my_resolver");
24        assert_eq!(node.name, CamelCaseString::new("myResolver"));
25        assert_eq!(node.docs, Docs::default());
26        assert_eq!(node.depends_on, vec![]);
27    }
28
29    #[test]
30    fn direct_instantiation() {
31        let node = ResolverValueNode {
32            name: "myResolver".into(),
33            docs: vec!["I am some resolver docs.".to_string()].into(),
34            depends_on: vec![
35                AccountValueNode::new("myDependentAccount").into(),
36                ArgumentValueNode::new("myDependentArgument").into(),
37            ],
38        };
39        assert_eq!(node.name, CamelCaseString::new("myResolver"));
40        assert_eq!(
41            node.docs,
42            Docs::from(vec!["I am some resolver docs.".to_string()])
43        );
44        assert_eq!(
45            node.depends_on,
46            vec![
47                ResolverDependency::Account(AccountValueNode::new("myDependentAccount")),
48                ResolverDependency::Argument(ArgumentValueNode::new("myDependentArgument")),
49            ]
50        );
51    }
52
53    #[test]
54    fn to_json() {
55        let node = ResolverValueNode::new("myResolver");
56        let json = serde_json::to_string(&node).unwrap();
57        assert_eq!(json, r#"{"kind":"resolverValueNode","name":"myResolver"}"#);
58    }
59
60    #[test]
61    fn from_json() {
62        let json = r#"{"kind":"resolverValueNode","name":"myResolver"}"#;
63        let node: ResolverValueNode = serde_json::from_str(json).unwrap();
64        assert_eq!(node, ResolverValueNode::new("myResolver"));
65    }
66}