codama_nodes/contextual_value_nodes/
resolver_value_node.rs1use 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}