use serde::Deserialize;
use serde::Serialize;
use crate::protocol::subscription::subscription_group_config::SubscriptionGroupConfig;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionGroupList {
pub group_config_list: Vec<SubscriptionGroupConfig>,
}
#[cfg(test)]
mod tests {
use cheetah_string::CheetahString;
use super::*;
#[test]
fn subscription_group_list_round_trips() {
let body = SubscriptionGroupList {
group_config_list: vec![SubscriptionGroupConfig::new(CheetahString::from_static_str("group-a"))],
};
let json = serde_json::to_string(&body).expect("serialize subscription group list");
assert!(json.contains("\"groupConfigList\""));
assert!(json.contains("\"groupName\":\"group-a\""));
let decoded: SubscriptionGroupList = serde_json::from_str(&json).expect("deserialize subscription group list");
assert_eq!(decoded.group_config_list.len(), 1);
assert_eq!(decoded.group_config_list[0].group_name(), "group-a");
}
}