codama_nodes/display_nodes/
instruction_display_node.rs1use crate::InstructionDisplayNode;
2
3impl InstructionDisplayNode {
4 pub fn new<T>(intent: T) -> Self
5 where
6 T: Into<String>,
7 {
8 Self {
9 intent: Some(intent.into()),
10 ..Default::default()
11 }
12 }
13
14 pub fn interpolated<T>(interpolated_intent: T) -> Self
15 where
16 T: Into<String>,
17 {
18 Self {
19 interpolated_intent: Some(interpolated_intent.into()),
20 ..Default::default()
21 }
22 }
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn new() {
31 let node = InstructionDisplayNode::new("Transfer");
32 assert_eq!(node.intent.as_deref(), Some("Transfer"));
33 assert_eq!(node.interpolated_intent, None);
34 }
35
36 #[test]
37 fn interpolated() {
38 let node = InstructionDisplayNode::interpolated("Send {amount} to {to}");
39 assert_eq!(node.intent, None);
40 assert_eq!(
41 node.interpolated_intent.as_deref(),
42 Some("Send {amount} to {to}")
43 );
44 }
45
46 #[test]
47 fn to_json() {
48 let node = InstructionDisplayNode {
49 intent: Some("Transfer".to_string()),
50 interpolated_intent: Some("Send {amount} to {to}".to_string()),
51 };
52 let json = serde_json::to_string(&node).unwrap();
53 assert_eq!(
54 json,
55 r#"{"kind":"instructionDisplayNode","intent":"Transfer","interpolatedIntent":"Send {amount} to {to}"}"#
56 );
57 }
58
59 #[test]
60 fn from_json() {
61 let json = r#"{"kind":"instructionDisplayNode","intent":"Transfer"}"#;
62 let node: InstructionDisplayNode = serde_json::from_str(json).unwrap();
63 assert_eq!(node, InstructionDisplayNode::new("Transfer"));
64 }
65}