1
1
use crate :: {
2
2
builders:: { CrateBuilder , DependencyBuilder , PublishBuilder , VersionBuilder } ,
3
+ insta:: rfc3339_redaction,
3
4
new_category, new_dependency, new_user, CrateMeta , CrateResponse , GoodCrate , OkBool ,
4
5
RequestHelper , TestApp ,
5
6
} ;
6
7
use cargo_registry:: {
7
8
models:: { krate:: MAX_NAME_LENGTH , Category , Crate } ,
8
9
schema:: { api_tokens, crates, emails, metadata, versions, versions_published_by} ,
9
- views:: {
10
- EncodableCategory , EncodableCrate , EncodableDependency , EncodableKeyword , EncodableVersion ,
11
- EncodableVersionDownload ,
12
- } ,
10
+ views:: { EncodableDependency , EncodableVersion , EncodableVersionDownload } ,
13
11
} ;
14
12
use std:: {
15
13
collections:: HashMap ,
@@ -22,6 +20,8 @@ use chrono::Utc;
22
20
use conduit:: StatusCode ;
23
21
use diesel:: { dsl:: * , prelude:: * , update} ;
24
22
use flate2:: { write:: GzEncoder , Compression } ;
23
+ use insta:: assert_json_snapshot;
24
+ use serde_json:: Value ;
25
25
26
26
#[ derive( Deserialize ) ]
27
27
struct VersionsList {
@@ -42,18 +42,6 @@ struct Downloads {
42
42
version_downloads : Vec < EncodableVersionDownload > ,
43
43
}
44
44
45
- #[ derive( Deserialize ) ]
46
- struct SummaryResponse {
47
- num_downloads : i64 ,
48
- num_crates : i64 ,
49
- new_crates : Vec < EncodableCrate > ,
50
- most_downloaded : Vec < EncodableCrate > ,
51
- most_recently_downloaded : Vec < EncodableCrate > ,
52
- just_updated : Vec < EncodableCrate > ,
53
- popular_keywords : Vec < EncodableKeyword > ,
54
- popular_categories : Vec < EncodableCategory > ,
55
- }
56
-
57
45
impl crate :: util:: MockAnonymousUser {
58
46
fn reverse_dependencies ( & self , krate_name : & str ) -> RevDeps {
59
47
let url = format ! ( "/api/v1/crates/{}/reverse_dependencies" , krate_name) ;
@@ -1330,7 +1318,8 @@ fn new_krate_records_verified_email() {
1330
1318
#[ test]
1331
1319
fn summary_doesnt_die ( ) {
1332
1320
let ( _, anon) = TestApp :: init ( ) . empty ( ) ;
1333
- anon. get :: < SummaryResponse > ( "/api/v1/summary" ) . good ( ) ;
1321
+ let json: Value = anon. get ( "/api/v1/summary" ) . good ( ) ;
1322
+ assert_json_snapshot ! ( json) ;
1334
1323
}
1335
1324
1336
1325
#[ test]
@@ -1403,31 +1392,11 @@ fn summary_new_crates() {
1403
1392
. unwrap ( ) ;
1404
1393
} ) ;
1405
1394
1406
- let json: SummaryResponse = anon. get ( "/api/v1/summary" ) . good ( ) ;
1407
-
1408
- assert_eq ! ( json. num_crates, 5 ) ;
1409
- assert_eq ! ( json. num_downloads, 6000 ) ;
1410
- assert_eq ! ( json. most_downloaded[ 0 ] . name, "most_recent_downloads" ) ;
1411
- assert_eq ! ( json. most_downloaded[ 0 ] . downloads, 5000 ) ;
1412
- assert_eq ! ( json. most_downloaded[ 0 ] . recent_downloads, Some ( 50 ) ) ;
1413
- assert_eq ! (
1414
- json. most_recently_downloaded[ 0 ] . name,
1415
- "most_recent_downloads"
1416
- ) ;
1417
- assert_eq ! ( json. most_recently_downloaded[ 0 ] . recent_downloads, Some ( 50 ) ) ;
1418
- assert_eq ! ( json. popular_keywords[ 0 ] . keyword, "popular" ) ;
1419
- assert_eq ! ( json. popular_categories[ 0 ] . category, "Category 1" ) ;
1420
- assert_eq ! ( json. just_updated. len( ) , 2 ) ;
1421
-
1422
- assert_eq ! ( json. just_updated[ 0 ] . name, "just_updated_patch" ) ;
1423
- assert_eq ! ( json. just_updated[ 0 ] . max_version, "0.2.0" ) ;
1424
- assert_eq ! ( json. just_updated[ 0 ] . newest_version, "0.1.1" ) ;
1425
-
1426
- assert_eq ! ( json. just_updated[ 1 ] . name, "just_updated" ) ;
1427
- assert_eq ! ( json. just_updated[ 1 ] . max_version, "0.1.2" ) ;
1428
- assert_eq ! ( json. just_updated[ 1 ] . newest_version, "0.1.2" ) ;
1429
-
1430
- assert_eq ! ( json. new_crates. len( ) , 5 ) ;
1395
+ let json: Value = anon. get ( "/api/v1/summary" ) . good ( ) ;
1396
+ assert_json_snapshot ! ( json, {
1397
+ ".**.created_at" => rfc3339_redaction( ) ,
1398
+ ".**.updated_at" => rfc3339_redaction( ) ,
1399
+ } ) ;
1431
1400
}
1432
1401
1433
1402
#[ test]
0 commit comments