#[derive(Debug, Clone)]
pub struct WhatsAppMessage {
pub message: ferro_whatsapp::Message,
}
impl WhatsAppMessage {
pub fn text(body: impl Into<String>) -> Self {
Self {
message: ferro_whatsapp::Message::Text { body: body.into() },
}
}
pub fn template(
name: impl Into<String>,
language: impl Into<String>,
parameters: Vec<serde_json::Value>,
) -> Self {
Self {
message: ferro_whatsapp::Message::Template {
name: name.into(),
language: language.into(),
parameters,
},
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_whatsapp_message_text_builder() {
let msg = WhatsAppMessage::text("hello");
match msg.message {
ferro_whatsapp::Message::Text { body } => assert_eq!(body, "hello"),
_ => panic!("expected Text variant"),
}
}
#[test]
fn test_whatsapp_message_template_builder() {
let params = vec![serde_json::json!({"type": "text", "text": "Alberto"})];
let msg = WhatsAppMessage::template("order_confirmation", "it", params.clone());
match msg.message {
ferro_whatsapp::Message::Template {
name,
language,
parameters,
} => {
assert_eq!(name, "order_confirmation");
assert_eq!(language, "it");
assert_eq!(parameters, params);
}
_ => panic!("expected Template variant"),
}
}
}