camel_case_token_with_comment/
extract_token_name_field.rs1crate::ix!();
3
4pub fn extract_token_name_field(json: &serde_json::Value) -> Result<&str, TokenParseError> {
13 json.get("token_name")
14 .and_then(|tn| tn.as_str())
15 .ok_or(TokenParseError::InvalidTokenName)
16}
17
18
19#[cfg(test)]
20mod test_extract_token_name_field {
21 use super::*;
22
23 #[traced_test]
24 fn test_extract_token_name_valid() {
25 tracing::info!("Testing extract_token_name_field with valid data");
26 let json_data = json!({ "token_name": "example_token" });
27 let result = extract_token_name_field(&json_data);
28 pretty_assert_eq!(result, Ok("example_token"));
29 }
30
31 #[traced_test]
32 fn test_extract_token_name_missing_field() {
33 tracing::info!("Testing extract_token_name_field with missing field");
34 let json_data = json!({ "other_field": "value" });
35 let result = extract_token_name_field(&json_data);
36 assert!(matches!(result, Err(TokenParseError::InvalidTokenName)));
37 }
38
39 #[traced_test]
40 fn test_extract_token_name_field_not_string() {
41 tracing::info!("Testing extract_token_name_field with non-string field");
42 let json_data = json!({ "token_name": 123 });
43 let result = extract_token_name_field(&json_data);
44 assert!(matches!(result, Err(TokenParseError::InvalidTokenName)));
45 }
46
47 #[traced_test]
48 fn test_extract_token_name_empty_json() {
49 tracing::info!("Testing extract_token_name_field with empty JSON object");
50 let json_data = json!({});
51 let result = extract_token_name_field(&json_data);
52 assert!(matches!(result, Err(TokenParseError::InvalidTokenName)));
53 }
54
55 #[traced_test]
56 fn test_extract_token_name_null_field() {
57 tracing::info!("Testing extract_token_name_field with null token_name field");
58 let json_data = json!({ "token_name": null });
59 let result = extract_token_name_field(&json_data);
60 assert!(matches!(result, Err(TokenParseError::InvalidTokenName)));
61 }
62}