1- use kube:: CustomResource ;
1+ use std:: { fs:: File , path:: Path } ;
2+
3+ use insta:: { assert_snapshot, glob} ;
4+ use kube:: {
5+ CustomResource ,
6+ core:: { conversion:: ConversionReview , response:: StatusSummary } ,
7+ } ;
28use schemars:: JsonSchema ;
39use serde:: { Deserialize , Serialize } ;
410use stackable_versioned_macros:: versioned;
@@ -57,15 +63,16 @@ pub enum Gender {
5763 Female ,
5864}
5965
60- impl Into < String > for Gender {
61- fn into ( self ) -> String {
62- match self {
66+ impl From < Gender > for String {
67+ fn from ( value : Gender ) -> Self {
68+ match value {
6369 Gender :: Unknown => "Unknown" . to_string ( ) ,
6470 Gender :: Male => "Male" . to_string ( ) ,
6571 Gender :: Female => "Female" . to_string ( ) ,
6672 }
6773 }
6874}
75+
6976impl From < String > for Gender {
7077 fn from ( value : String ) -> Self {
7178 match value. as_str ( ) {
@@ -76,67 +83,57 @@ impl From<String> for Gender {
7683 }
7784}
7885
79- #[ cfg( test) ]
80- mod tests {
81- use std:: { fs:: File , path:: Path } ;
82-
83- use insta:: { assert_snapshot, glob} ;
84- use kube:: core:: { conversion:: ConversionReview , response:: StatusSummary } ;
85-
86- use super :: Person ;
87-
88- #[ test]
89- fn pass ( ) {
90- glob ! ( "./fixtures/inputs/pass/" , "*.json" , |path| {
91- let ( request, response) = run_for_file( path) ;
92-
93- let formatted = serde_json:: to_string_pretty( & response)
94- . expect( "Failed to serialize ConversionResponse" ) ;
95- assert_snapshot!( formatted) ;
96-
97- let response = response
98- . response
99- . expect( "ConversionReview had no response!" ) ;
100-
101- assert_eq!(
102- response. result. status,
103- Some ( StatusSummary :: Success ) ,
104- "File {path:?} should be converted successfully"
105- ) ;
106- assert_eq!( request. request. unwrap( ) . uid, response. uid) ;
107- } )
108- }
86+ #[ test]
87+ fn pass ( ) {
88+ glob ! ( "./fixtures/inputs/pass/" , "*.json" , |path| {
89+ let ( request, response) = run_for_file( path) ;
90+
91+ let formatted = serde_json:: to_string_pretty( & response)
92+ . expect( "Failed to serialize ConversionResponse" ) ;
93+ assert_snapshot!( formatted) ;
94+
95+ let response = response
96+ . response
97+ . expect( "ConversionReview had no response!" ) ;
98+
99+ assert_eq!(
100+ response. result. status,
101+ Some ( StatusSummary :: Success ) ,
102+ "File {path:?} should be converted successfully"
103+ ) ;
104+ assert_eq!( request. request. unwrap( ) . uid, response. uid) ;
105+ } )
106+ }
109107
110- #[ test]
111- fn fail ( ) {
112- glob ! ( "./fixtures/inputs/fail/" , "*.json" , |path| {
113- let ( request, response) = run_for_file( path) ;
114-
115- let formatted = serde_json:: to_string_pretty( & response)
116- . expect( "Failed to serialize ConversionResponse" ) ;
117- assert_snapshot!( formatted) ;
118-
119- let response = response
120- . response
121- . expect( "ConversionReview had no response!" ) ;
122-
123- assert_eq!(
124- response. result. status,
125- Some ( StatusSummary :: Failure ) ,
126- "File {path:?} should *not* be converted successfully"
127- ) ;
128- if let Some ( request) = & request. request {
129- assert_eq!( request. uid, response. uid) ;
130- }
131- } )
132- }
108+ #[ test]
109+ fn fail ( ) {
110+ glob ! ( "./fixtures/inputs/fail/" , "*.json" , |path| {
111+ let ( request, response) = run_for_file( path) ;
112+
113+ let formatted = serde_json:: to_string_pretty( & response)
114+ . expect( "Failed to serialize ConversionResponse" ) ;
115+ assert_snapshot!( formatted) ;
116+
117+ let response = response
118+ . response
119+ . expect( "ConversionReview had no response!" ) ;
120+
121+ assert_eq!(
122+ response. result. status,
123+ Some ( StatusSummary :: Failure ) ,
124+ "File {path:?} should *not* be converted successfully"
125+ ) ;
126+ if let Some ( request) = & request. request {
127+ assert_eq!( request. uid, response. uid) ;
128+ }
129+ } )
130+ }
133131
134- fn run_for_file ( path : & Path ) -> ( ConversionReview , ConversionReview ) {
135- let request: ConversionReview =
136- serde_json:: from_reader ( File :: open ( path) . expect ( "failed to open test file" ) )
137- . expect ( "failed to parse ConversionReview from test file" ) ;
138- let response = Person :: try_convert ( request. clone ( ) ) ;
132+ fn run_for_file ( path : & Path ) -> ( ConversionReview , ConversionReview ) {
133+ let request: ConversionReview =
134+ serde_json:: from_reader ( File :: open ( path) . expect ( "failed to open test file" ) )
135+ . expect ( "failed to parse ConversionReview from test file" ) ;
136+ let response = Person :: try_convert ( request. clone ( ) ) ;
139137
140- ( request, response)
141- }
138+ ( request, response)
142139}
0 commit comments