@@ -61,3 +61,93 @@ pub async fn delete_pet(pet_id: web::Path<i64>, store: web::Data<PetStore>) -> i
6161pub async fn upload_file ( ) -> impl Responder {
6262 HttpResponse :: Ok ( ) . finish ( )
6363}
64+ #[ cfg( test) ]
65+ mod tests {
66+ use super :: * ;
67+ use actix_web:: { test, App } ;
68+
69+ #[ actix_web:: test]
70+ async fn test_pet_handlers ( ) {
71+ let store = web:: Data :: new ( PetStore {
72+ pets : Mutex :: new ( HashMap :: new ( ) ) ,
73+ } ) ;
74+
75+ let app = test:: init_service (
76+ App :: new ( )
77+ . app_data ( store. clone ( ) )
78+ . route ( "/pet" , web:: post ( ) . to ( add_pet) )
79+ . route ( "/pet" , web:: put ( ) . to ( update_pet) )
80+ . route ( "/pet/findByStatus" , web:: get ( ) . to ( find_pets_by_status) )
81+ . route ( "/pet/findByTags" , web:: get ( ) . to ( find_pets_by_tags) )
82+ . route ( "/pet/{petId}" , web:: get ( ) . to ( get_pet_by_id) )
83+ . route ( "/pet/{petId}" , web:: post ( ) . to ( update_pet_with_form) )
84+ . route ( "/pet/{petId}" , web:: delete ( ) . to ( delete_pet) )
85+ . route ( "/pet/{petId}/uploadImage" , web:: post ( ) . to ( upload_file) ) ,
86+ )
87+ . await ;
88+
89+ let req = test:: TestRequest :: post ( )
90+ . uri ( "/pet" )
91+ . set_json ( serde_json:: json!( { "id" : 1 , "name" : "Fido" } ) )
92+ . to_request ( ) ;
93+ let resp = test:: call_service ( & app, req) . await ;
94+ assert ! ( resp. status( ) . is_success( ) ) ;
95+
96+ let req = test:: TestRequest :: post ( )
97+ . uri ( "/pet" )
98+ . set_json ( serde_json:: json!( { "name" : "NoId" } ) )
99+ . to_request ( ) ;
100+ let resp = test:: call_service ( & app, req) . await ;
101+ assert ! ( resp. status( ) . is_client_error( ) ) ;
102+
103+ let req = test:: TestRequest :: put ( )
104+ . uri ( "/pet" )
105+ . set_json ( serde_json:: json!( { "id" : 1 , "name" : "Fido Updated" } ) )
106+ . to_request ( ) ;
107+ let resp = test:: call_service ( & app, req) . await ;
108+ assert ! ( resp. status( ) . is_success( ) ) ;
109+
110+ let req = test:: TestRequest :: put ( )
111+ . uri ( "/pet" )
112+ . set_json ( serde_json:: json!( { "name" : "NoId" } ) )
113+ . to_request ( ) ;
114+ let resp = test:: call_service ( & app, req) . await ;
115+ assert ! ( resp. status( ) . is_client_error( ) ) ;
116+
117+ let req = test:: TestRequest :: get ( )
118+ . uri ( "/pet/findByStatus" )
119+ . to_request ( ) ;
120+ let resp = test:: call_service ( & app, req) . await ;
121+ assert ! ( resp. status( ) . is_success( ) ) ;
122+
123+ let req = test:: TestRequest :: get ( ) . uri ( "/pet/findByTags" ) . to_request ( ) ;
124+ let resp = test:: call_service ( & app, req) . await ;
125+ assert ! ( resp. status( ) . is_success( ) ) ;
126+
127+ let req = test:: TestRequest :: get ( ) . uri ( "/pet/1" ) . to_request ( ) ;
128+ let resp = test:: call_service ( & app, req) . await ;
129+ assert ! ( resp. status( ) . is_success( ) ) ;
130+
131+ let req = test:: TestRequest :: get ( ) . uri ( "/pet/2" ) . to_request ( ) ;
132+ let resp = test:: call_service ( & app, req) . await ;
133+ assert ! ( resp. status( ) . is_client_error( ) ) ;
134+
135+ let req = test:: TestRequest :: post ( ) . uri ( "/pet/1" ) . to_request ( ) ;
136+ let resp = test:: call_service ( & app, req) . await ;
137+ assert ! ( resp. status( ) . is_success( ) ) ;
138+
139+ let req = test:: TestRequest :: delete ( ) . uri ( "/pet/1" ) . to_request ( ) ;
140+ let resp = test:: call_service ( & app, req) . await ;
141+ assert ! ( resp. status( ) . is_success( ) ) ;
142+
143+ let req = test:: TestRequest :: delete ( ) . uri ( "/pet/2" ) . to_request ( ) ;
144+ let resp = test:: call_service ( & app, req) . await ;
145+ assert ! ( resp. status( ) . is_client_error( ) ) ;
146+
147+ let req = test:: TestRequest :: post ( )
148+ . uri ( "/pet/1/uploadImage" )
149+ . to_request ( ) ;
150+ let resp = test:: call_service ( & app, req) . await ;
151+ assert ! ( resp. status( ) . is_success( ) ) ;
152+ }
153+ }
0 commit comments