use cheetah_string::CheetahString;
use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct TopicList {
pub topic_list: Vec<CheetahString>,
pub broker_addr: Option<CheetahString>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serde_contract_uses_java_field_names() {
let body = TopicList {
topic_list: vec!["topic-a".into(), "topic-b".into()],
broker_addr: Some("127.0.0.1:10911".into()),
};
let value = serde_json::to_value(&body).expect("serialize topic list");
assert_eq!(
value,
serde_json::json!({
"topicList": ["topic-a", "topic-b"],
"brokerAddr": "127.0.0.1:10911"
})
);
let decoded: TopicList = serde_json::from_value(value).expect("deserialize topic list");
assert_eq!(decoded.topic_list, body.topic_list);
assert_eq!(decoded.broker_addr, body.broker_addr);
}
}