@@ -199,3 +199,43 @@ fn following() {
199
199
200
200
bad_resp ! ( middle. call( req. with_query( "page=0" ) ) ) ;
201
201
}
202
+
203
+ #[ test]
204
+ fn user_total_downloads ( ) {
205
+ use diesel:: update;
206
+
207
+ let ( _b, app, middle) = :: app ( ) ;
208
+ let u;
209
+ {
210
+ let conn = app. diesel_database . get ( ) . unwrap ( ) ;
211
+
212
+ u = :: new_user ( "foo" ) . create_or_update ( & conn) . unwrap ( ) ;
213
+
214
+ let mut krate = :: new_crate ( "foo_krate1" )
215
+ . create_or_update ( & conn, None , u. id ) . unwrap ( ) ;
216
+ krate. downloads = 10 ;
217
+ update ( & krate) . set ( & krate) . execute ( & * conn) . unwrap ( ) ;
218
+
219
+
220
+ let mut krate2 = :: new_crate ( "foo_krate2" )
221
+ . create_or_update ( & conn, None , u. id ) . unwrap ( ) ;
222
+ krate2. downloads = 20 ;
223
+ update ( & krate2) . set ( & krate2) . execute ( & * conn) . unwrap ( ) ;
224
+
225
+ let another_user = :: new_user ( "bar" ) . create_or_update ( & conn) . unwrap ( ) ;
226
+
227
+ let mut another_krate = :: new_crate ( "bar_krate1" )
228
+ . create_or_update ( & conn, None , another_user. id ) . unwrap ( ) ;
229
+ another_krate. downloads = 2 ;
230
+ update ( & another_krate) . set ( & another_krate) . execute ( & * conn) . unwrap ( ) ;
231
+ }
232
+
233
+ let mut req = :: req ( app, Method :: Get , & format ! ( "/api/v1/users/{}/stats" , u. id) ) ;
234
+ let mut response = ok_resp ! ( middle. call( & mut req) ) ;
235
+
236
+ #[ derive( RustcDecodable ) ]
237
+ struct Response { total_downloads : i64 }
238
+ let response: Response = :: json ( & mut response) ;
239
+ assert_eq ! ( response. total_downloads, 30 ) ;
240
+ assert ! ( response. total_downloads != 32 ) ;
241
+ }
0 commit comments