orchestrator_config/
crd_scope.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default)]
5#[serde(rename_all = "snake_case")]
6pub enum CrdScope {
7 Namespaced,
9 #[default]
11 Cluster,
12 Singleton,
14}
15
16#[cfg(test)]
17mod tests {
18 use super::*;
19
20 #[test]
21 fn default_is_cluster() {
22 assert_eq!(CrdScope::default(), CrdScope::Cluster);
23 }
24
25 #[test]
26 fn serde_round_trip() {
27 for scope in [CrdScope::Namespaced, CrdScope::Cluster, CrdScope::Singleton] {
28 let json = serde_json::to_string(&scope).expect("serialize");
29 let back: CrdScope = serde_json::from_str(&json).expect("deserialize");
30 assert_eq!(scope, back);
31 }
32 }
33
34 #[test]
35 fn deserializes_from_snake_case() {
36 let s: CrdScope = serde_json::from_str("\"namespaced\"").unwrap();
37 assert_eq!(s, CrdScope::Namespaced);
38 let s: CrdScope = serde_json::from_str("\"cluster\"").unwrap();
39 assert_eq!(s, CrdScope::Cluster);
40 let s: CrdScope = serde_json::from_str("\"singleton\"").unwrap();
41 assert_eq!(s, CrdScope::Singleton);
42 }
43}