Skip to content

Commit 3e02906

Browse files
committed
test: add regression test for Optional<Enum> schema
Signed-off-by: Shane Utt <[email protected]>
1 parent 01ec3c7 commit 3e02906

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

kube-derive/tests/crd_schema_test.rs

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ struct FooSpec {
7777

7878
#[x_kube(merge_strategy = ListMerge::Set)]
7979
x_kubernetes_set: Vec<String>,
80+
81+
/// Gender of a person
82+
optional_enum: Option<Gender>,
8083
}
8184

8285
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, JsonSchema)]
@@ -170,24 +173,28 @@ fn test_shortnames() {
170173
#[test]
171174
fn test_serialized_matches_expected() {
172175
assert_json_eq!(
173-
serde_json::to_value(Foo::new("bar", FooSpec {
174-
non_nullable: "asdf".to_string(),
175-
non_nullable_with_default: "asdf".to_string(),
176-
nullable_skipped: None,
177-
nullable: None,
178-
nullable_skipped_with_default: None,
179-
nullable_with_default: None,
180-
timestamp: DateTime::from_timestamp(0, 0).unwrap(),
181-
complex_enum: ComplexEnum::VariantOne { int: 23 },
182-
untagged_enum_person: UntaggedEnumPerson::GenderAndAge(GenderAndAge {
183-
age: 42,
184-
gender: Gender::Male,
185-
}),
186-
associated_default: false,
187-
my_list: vec!["".into()],
188-
set: HashSet::from(["foo".to_owned()]),
189-
x_kubernetes_set: vec![],
190-
}))
176+
serde_json::to_value(Foo::new(
177+
"bar",
178+
FooSpec {
179+
non_nullable: "asdf".to_string(),
180+
non_nullable_with_default: "asdf".to_string(),
181+
nullable_skipped: None,
182+
nullable: None,
183+
nullable_skipped_with_default: None,
184+
nullable_with_default: None,
185+
timestamp: DateTime::from_timestamp(0, 0).unwrap(),
186+
complex_enum: ComplexEnum::VariantOne { int: 23 },
187+
untagged_enum_person: UntaggedEnumPerson::GenderAndAge(GenderAndAge {
188+
age: 42,
189+
gender: Gender::Male,
190+
}),
191+
associated_default: false,
192+
my_list: vec!["".into()],
193+
set: HashSet::from(["foo".to_owned()]),
194+
x_kubernetes_set: vec![],
195+
optional_enum: Some(Gender::Other),
196+
}
197+
))
191198
.unwrap(),
192199
serde_json::json!({
193200
"apiVersion": "clux.dev/v1",
@@ -222,6 +229,7 @@ fn test_serialized_matches_expected() {
222229
"myList": [""],
223230
"set": ["foo"],
224231
"xKubernetesSet": [],
232+
"optionalEnum": "Other",
225233
}
226234
})
227235
)
@@ -410,6 +418,16 @@ fn test_crd_schema_matches_expected() {
410418
},
411419
"x-kubernetes-list-type": "set",
412420
},
421+
"optionalEnum": {
422+
"description": "Gender of a person",
423+
"enum": [
424+
"Female",
425+
"Male",
426+
"Other"
427+
],
428+
"type": "string",
429+
"nullable": true
430+
}
413431
},
414432
"required": [
415433
"complexEnum",

0 commit comments

Comments
 (0)