Skip to main content

openlark_webhook/robot/v1/
models.rs

1use serde::{Deserialize, Serialize};
2
3/// 文本消息内容模型。
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct TextMessage {
6    /// 文本内容。
7    pub text: String,
8}
9
10/// 卡片消息内容模型。
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct CardMessage {
13    /// 卡片 JSON 内容。
14    pub card: serde_json::Value,
15}
16
17/// 机器人消息内容枚举。
18#[derive(Debug, Clone, Serialize, Deserialize)]
19#[serde(untagged)]
20pub enum MessageContent {
21    /// 文本消息。
22    Text(TextMessage),
23    /// 卡片消息。
24    Card(CardMessage),
25}
26
27#[cfg(test)]
28#[allow(unused_imports)]
29mod tests {
30
31    #[test]
32    fn test_serialization_roundtrip() {
33        // 基础序列化测试
34        let json = r#"{"test": "value"}"#;
35        assert!(serde_json::from_str::<serde_json::Value>(json).is_ok());
36    }
37
38    #[test]
39    fn test_deserialization_from_json() {
40        // 基础反序列化测试
41        let json = r#"{"field": "data"}"#;
42        let value: serde_json::Value = serde_json::from_str(json).expect("JSON 反序列化失败");
43        assert_eq!(value["field"], "data");
44    }
45}