@@ -43,3 +43,87 @@ impl BrokerMemberGroup {
43
43
pub struct GetBrokerMemberGroupResponseBody {
44
44
pub broker_member_group : Option < BrokerMemberGroup > ,
45
45
}
46
+
47
+ #[ cfg( test) ]
48
+ mod tests {
49
+ use std:: collections:: HashMap ;
50
+
51
+ use cheetah_string:: CheetahString ;
52
+
53
+ use super :: * ;
54
+
55
+ #[ test]
56
+ fn new_creates_broker_member_group_with_empty_broker_addrs ( ) {
57
+ let cluster = CheetahString :: from ( "test_cluster" ) ;
58
+ let broker_name = CheetahString :: from ( "test_broker" ) ;
59
+ let group = BrokerMemberGroup :: new ( cluster. clone ( ) , broker_name. clone ( ) ) ;
60
+
61
+ assert_eq ! ( group. cluster, cluster) ;
62
+ assert_eq ! ( group. broker_name, broker_name) ;
63
+ assert ! ( group. broker_addrs. is_empty( ) ) ;
64
+ }
65
+
66
+ #[ test]
67
+ fn broker_member_group_serializes_correctly ( ) {
68
+ let cluster = CheetahString :: from ( "test_cluster" ) ;
69
+ let broker_name = CheetahString :: from ( "test_broker" ) ;
70
+ let mut broker_addrs = HashMap :: new ( ) ;
71
+ broker_addrs. insert ( 1 , CheetahString :: from ( "127.0.0.1:10911" ) ) ;
72
+ let group = BrokerMemberGroup {
73
+ cluster : cluster. clone ( ) ,
74
+ broker_name : broker_name. clone ( ) ,
75
+ broker_addrs : broker_addrs. clone ( ) ,
76
+ } ;
77
+
78
+ let serialized = serde_json:: to_string ( & group) . unwrap ( ) ;
79
+ let expected = format ! (
80
+ r#"{{"cluster":"{}","brokerName":"{}","brokerAddrs":{{"1":"{}"}}}}"# ,
81
+ cluster,
82
+ broker_name,
83
+ broker_addrs. get( & 1 ) . unwrap( )
84
+ ) ;
85
+ assert_eq ! ( serialized, expected) ;
86
+ }
87
+
88
+ #[ test]
89
+ fn broker_member_group_deserializes_correctly ( ) {
90
+ let data = r#"{"cluster":"test_cluster","brokerName":"test_broker","brokerAddrs":{"1":"127.0.0.1:10911"}}"# ;
91
+ let group: BrokerMemberGroup = serde_json:: from_str ( data) . unwrap ( ) ;
92
+
93
+ assert_eq ! ( group. cluster, CheetahString :: from( "test_cluster" ) ) ;
94
+ assert_eq ! ( group. broker_name, CheetahString :: from( "test_broker" ) ) ;
95
+ assert_eq ! (
96
+ group. broker_addrs. get( & 1 ) . unwrap( ) ,
97
+ & CheetahString :: from( "127.0.0.1:10911" )
98
+ ) ;
99
+ }
100
+
101
+ #[ test]
102
+ fn get_broker_member_group_response_body_serializes_correctly ( ) {
103
+ let cluster = CheetahString :: from ( "test_cluster" ) ;
104
+ let broker_name = CheetahString :: from ( "test_broker" ) ;
105
+ let group = BrokerMemberGroup :: new ( cluster. clone ( ) , broker_name. clone ( ) ) ;
106
+ let response_body = GetBrokerMemberGroupResponseBody {
107
+ broker_member_group : Some ( group. clone ( ) ) ,
108
+ } ;
109
+
110
+ let serialized = serde_json:: to_string ( & response_body) . unwrap ( ) ;
111
+ let expected = format ! (
112
+ r#"{{"brokerMemberGroup":{{"cluster":"{}","brokerName":"{}","brokerAddrs":{{}}}}}}"# ,
113
+ cluster, broker_name
114
+ ) ;
115
+ assert_eq ! ( serialized, expected) ;
116
+ }
117
+
118
+ #[ test]
119
+ fn get_broker_member_group_response_body_deserializes_correctly ( ) {
120
+ let data = r#"{"brokerMemberGroup":{"cluster":"test_cluster","brokerName":"test_broker","brokerAddrs":{}}}"# ;
121
+ let response_body: GetBrokerMemberGroupResponseBody = serde_json:: from_str ( data) . unwrap ( ) ;
122
+
123
+ assert ! ( response_body. broker_member_group. is_some( ) ) ;
124
+ let group = response_body. broker_member_group . unwrap ( ) ;
125
+ assert_eq ! ( group. cluster, CheetahString :: from( "test_cluster" ) ) ;
126
+ assert_eq ! ( group. broker_name, CheetahString :: from( "test_broker" ) ) ;
127
+ assert ! ( group. broker_addrs. is_empty( ) ) ;
128
+ }
129
+ }
0 commit comments