gewe-core 0.1.4

Core types and definitions for gewe WeChat SDK
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SyncFavorRequest<'a> {
    #[serde(rename = "appId")]
    pub app_id: &'a str,
    #[serde(rename = "syncKey", skip_serializing_if = "Option::is_none")]
    pub sync_key: Option<&'a str>,
}

#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct FavorSummary {
    #[serde(rename = "favId")]
    pub fav_id: i64,
    #[serde(rename = "type")]
    pub favor_type: i32,
    pub flag: i32,
    #[serde(rename = "updateTime")]
    pub update_time: i64,
}

#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SyncFavorResponse {
    #[serde(rename = "syncKey")]
    pub sync_key: String,
    pub list: Vec<FavorSummary>,
}

#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetFavorContentRequest<'a> {
    #[serde(rename = "appId")]
    pub app_id: &'a str,
    #[serde(rename = "favId")]
    pub fav_id: i64,
}

#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetFavorContentResponse {
    #[serde(rename = "favId")]
    pub fav_id: i64,
    pub status: i32,
    pub flag: i32,
    #[serde(rename = "updateTime")]
    pub update_time: i64,
    pub content: String,
}

#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DeleteFavorRequest<'a> {
    #[serde(rename = "appId")]
    pub app_id: &'a str,
    #[serde(rename = "favId")]
    pub fav_id: i64,
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_favor_summary_default() {
        let summary = FavorSummary::default();
        assert_eq!(summary.fav_id, 0);
        assert_eq!(summary.favor_type, 0);
        assert_eq!(summary.flag, 0);
        assert_eq!(summary.update_time, 0);
    }

    #[test]
    fn test_sync_favor_response_default() {
        let resp = SyncFavorResponse::default();
        assert_eq!(resp.sync_key, "");
        assert!(resp.list.is_empty());
    }

    #[test]
    fn test_get_favor_content_response_default() {
        let resp = GetFavorContentResponse::default();
        assert_eq!(resp.fav_id, 0);
        assert_eq!(resp.status, 0);
        assert_eq!(resp.content, "");
    }

    #[test]
    fn test_sync_favor_request_serialization() {
        let req = SyncFavorRequest {
            app_id: "test_app",
            sync_key: Some("sync123"),
        };
        let json = serde_json::to_string(&req).unwrap();
        assert!(json.contains("test_app"));
        assert!(json.contains("sync123"));
    }

    #[test]
    fn test_get_favor_content_request_serialization() {
        let req = GetFavorContentRequest {
            app_id: "test_app",
            fav_id: 123456,
        };
        let json = serde_json::to_string(&req).unwrap();
        assert!(json.contains("test_app"));
        assert!(json.contains("123456"));
    }

    #[test]
    fn test_delete_favor_request_serialization() {
        let req = DeleteFavorRequest {
            app_id: "test_app",
            fav_id: 123456,
        };
        let json = serde_json::to_string(&req).unwrap();
        assert!(json.contains("test_app"));
        assert!(json.contains("123456"));
    }
}