@@ -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]
171174fn 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