@@ -117,3 +117,66 @@ pub mod properties;
117117pub mod region_mover;
118118pub mod resource;
119119pub mod role;
120+
121+ #[ cfg( test) ]
122+ mod tests {
123+ use stackable_operator:: kube:: Resource ;
124+
125+ use super :: build;
126+ use crate :: test_utils;
127+
128+ /// Collects the `.metadata.name`s of the given resources, sorted for stable comparison.
129+ fn sorted_names ( resources : & [ impl Resource ] ) -> Vec < & str > {
130+ let mut names: Vec < & str > = resources
131+ . iter ( )
132+ . filter_map ( |resource| resource. meta ( ) . name . as_deref ( ) )
133+ . collect ( ) ;
134+ names. sort ( ) ;
135+ names
136+ }
137+
138+ #[ test]
139+ fn build_produces_expected_resource_names ( ) {
140+ let cluster = test_utils:: validated_cluster ( ) ;
141+ let cluster_info = test_utils:: cluster_info ( ) ;
142+ let resources =
143+ build ( & cluster, & cluster_info, "hbase-serviceaccount" ) . expect ( "build succeeds" ) ;
144+
145+ // One StatefulSet per role group (one `default` group for each of the three roles).
146+ assert_eq ! (
147+ sorted_names( & resources. stateful_sets) ,
148+ [
149+ "hbase-master-default" ,
150+ "hbase-regionserver-default" ,
151+ "hbase-restserver-default" ,
152+ ]
153+ ) ;
154+ // One headless and one metrics Service per role group.
155+ assert_eq ! (
156+ sorted_names( & resources. services) ,
157+ [
158+ "hbase-master-default-headless" ,
159+ "hbase-master-default-metrics" ,
160+ "hbase-regionserver-default-headless" ,
161+ "hbase-regionserver-default-metrics" ,
162+ "hbase-restserver-default-headless" ,
163+ "hbase-restserver-default-metrics" ,
164+ ]
165+ ) ;
166+ // One ConfigMap per role group plus the cluster-wide discovery ConfigMap (`hbase`).
167+ assert_eq ! (
168+ sorted_names( & resources. config_maps) ,
169+ [
170+ "hbase" ,
171+ "hbase-master-default" ,
172+ "hbase-regionserver-default" ,
173+ "hbase-restserver-default" ,
174+ ]
175+ ) ;
176+ // A default PodDisruptionBudget per role.
177+ assert_eq ! (
178+ sorted_names( & resources. pod_disruption_budgets) ,
179+ [ "hbase-master" , "hbase-regionserver" , "hbase-restserver" ]
180+ ) ;
181+ }
182+ }
0 commit comments