1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
use crate::block_element::IMAGE_TYPE; use serde::Serialize; #[derive(Debug, Serialize)] pub struct ImageElement { #[serde(rename = "type")] type_name: &'static str, image_url: String, alt_text: String, } impl ImageElement { pub fn new(image_url: impl Into<String>, alt_text: impl Into<String>) -> Self { ImageElement { type_name: IMAGE_TYPE, image_url: image_url.into(), alt_text: alt_text.into(), } } } #[cfg(test)] mod test { use super::*; #[test] fn test_ser_new() { let image = ImageElement::new("url", "alt"); let json = serde_json::to_string_pretty(&image).unwrap_or("".to_string()); let expected = r#"{ "type": "image", "image_url": "url", "alt_text": "alt" }"#; assert_eq!(json, expected); } }