codama_nodes/
error_node.rs1use crate::{CamelCaseString, Docs, ErrorNode};
2
3impl ErrorNode {
4 pub fn new<T, U>(name: T, code: u32, message: U) -> Self
5 where
6 T: Into<CamelCaseString>,
7 U: Into<String>,
8 {
9 Self {
10 name: name.into(),
11 code,
12 message: message.into(),
13 docs: Docs::default(),
14 }
15 }
16}
17
18#[cfg(test)]
19mod tests {
20 use super::*;
21
22 #[test]
23 fn new() {
24 let node = ErrorNode::new("myError", 42, "Something went wrong");
25 assert_eq!(node.name, CamelCaseString::new("myError"));
26 assert_eq!(node.code, 42);
27 assert_eq!(node.message, "Something went wrong".to_string());
28 assert_eq!(node.docs, Docs::default());
29 }
30
31 #[test]
32 fn direct_instantiation() {
33 let node = ErrorNode {
34 name: "myError".into(),
35 code: 42,
36 message: "Something went wrong".into(),
37 docs: Docs::default(),
38 };
39 assert_eq!(node.name, CamelCaseString::new("myError"));
40 assert_eq!(node.code, 42);
41 assert_eq!(node.message, "Something went wrong".to_string());
42 assert_eq!(node.docs, Docs::default());
43 }
44
45 #[test]
46 fn to_json() {
47 let node = ErrorNode::new("myError", 42, "Something went wrong");
48 let json = serde_json::to_string(&node).unwrap();
49 assert_eq!(
50 json,
51 r#"{"kind":"errorNode","name":"myError","code":42,"message":"Something went wrong"}"#
52 );
53 }
54
55 #[test]
56 fn from_json() {
57 let json =
58 r#"{"kind":"errorNode","name":"myError","code":42,"message":"Something went wrong"}"#;
59 let node: ErrorNode = serde_json::from_str(json).unwrap();
60 assert_eq!(node, ErrorNode::new("myError", 42, "Something went wrong"));
61 }
62}