1
1
use cargo_registry:: app:: App ;
2
- use cargo_registry:: badge:: Badge ;
2
+ use cargo_registry:: badge:: { Badge , MaintenanceValue } ;
3
3
use cargo_registry:: krate:: Crate ;
4
4
5
5
use std:: collections:: HashMap ;
@@ -22,6 +22,8 @@ struct BadgeRef {
22
22
coveralls_attributes : HashMap < String , String > ,
23
23
circle_ci : Badge ,
24
24
circle_ci_attributes : HashMap < String , String > ,
25
+ maintenance : Badge ,
26
+ maintenance_attributes : HashMap < String , String > ,
25
27
}
26
28
27
29
fn set_up ( ) -> ( Arc < App > , Crate , BadgeRef ) {
@@ -106,6 +108,13 @@ fn set_up() -> (Arc<App>, Crate, BadgeRef) {
106
108
badge_attributes_circle_ci. insert ( String :: from ( "branch" ) , String :: from ( "beta" ) ) ;
107
109
badge_attributes_circle_ci. insert ( String :: from ( "repository" ) , String :: from ( "rust-lang/rust" ) ) ;
108
110
111
+ let maintenance = Badge :: Maintenance { value : MaintenanceValue :: LookingForMaintainer } ;
112
+ let mut maintenance_attributes = HashMap :: new ( ) ;
113
+ maintenance_attributes. insert (
114
+ String :: from ( "value" ) ,
115
+ String :: from ( "looking-for-maintainer" ) ,
116
+ ) ;
117
+
109
118
let badges = BadgeRef {
110
119
appveyor : appveyor,
111
120
appveyor_attributes : badge_attributes_appveyor,
@@ -124,6 +133,8 @@ fn set_up() -> (Arc<App>, Crate, BadgeRef) {
124
133
coveralls_attributes : badge_attributes_coveralls,
125
134
circle_ci : circle_ci,
126
135
circle_ci_attributes : badge_attributes_circle_ci,
136
+ maintenance,
137
+ maintenance_attributes,
127
138
} ;
128
139
( app, krate, badges)
129
140
}
@@ -247,6 +258,21 @@ fn update_add_circle_ci() {
247
258
assert_eq ! ( krate. badges( & conn) . unwrap( ) , vec![ test_badges. circle_ci] ) ;
248
259
}
249
260
261
+ #[ test]
262
+ fn update_add_maintenance ( ) {
263
+ // Add a maintenance badge
264
+ let ( app, krate, test_badges) = set_up ( ) ;
265
+ let conn = app. diesel_database . get ( ) . unwrap ( ) ;
266
+
267
+ let mut badges = HashMap :: new ( ) ;
268
+ badges. insert (
269
+ String :: from ( "maintenance" ) ,
270
+ test_badges. maintenance_attributes ,
271
+ ) ;
272
+ Badge :: update_crate ( & conn, & krate, Some ( & badges) ) . unwrap ( ) ;
273
+ assert_eq ! ( krate. badges( & conn) . unwrap( ) , vec![ test_badges. maintenance] ) ;
274
+ }
275
+
250
276
#[ test]
251
277
fn replace_badge ( ) {
252
278
// Replacing one badge with another
@@ -480,6 +506,53 @@ fn circle_ci_required_keys() {
480
506
assert_eq ! ( krate. badges( & conn) . unwrap( ) , vec![ ] ) ;
481
507
}
482
508
509
+ #[ test]
510
+ fn maintenance_required_keys ( ) {
511
+ // Add a maintenance badge missing a required field
512
+ let ( app, krate, mut test_badges) = set_up ( ) ;
513
+ let conn = app. diesel_database . get ( ) . unwrap ( ) ;
514
+
515
+ let mut badges = HashMap :: new ( ) ;
516
+
517
+ // Value is a required key
518
+ test_badges. maintenance_attributes . remove ( "value" ) ;
519
+ badges. insert (
520
+ String :: from ( "maintenance" ) ,
521
+ test_badges. maintenance_attributes ,
522
+ ) ;
523
+
524
+ let invalid_badges = Badge :: update_crate ( & conn, & krate, Some ( & badges) ) . unwrap ( ) ;
525
+ assert_eq ! ( invalid_badges. len( ) , 1 ) ;
526
+ assert ! ( invalid_badges. contains( & "maintenance" ) ) ;
527
+ assert_eq ! ( krate. badges( & conn) . unwrap( ) , vec![ ] ) ;
528
+ }
529
+
530
+ #[ test]
531
+ fn maintenance_invalid_values ( ) {
532
+ // Add a maintenance badge with an invalid value
533
+ let ( app, krate, mut test_badges) = set_up ( ) ;
534
+ let conn = app. diesel_database . get ( ) . unwrap ( ) ;
535
+
536
+ let mut badges = HashMap :: new ( ) ;
537
+
538
+ // "totes broken" is not a recognized value
539
+ test_badges. maintenance_attributes . insert (
540
+ String :: from ( "value" ) ,
541
+ String :: from (
542
+ "totes broken" ,
543
+ ) ,
544
+ ) ;
545
+ badges. insert (
546
+ String :: from ( "maintenance" ) ,
547
+ test_badges. maintenance_attributes ,
548
+ ) ;
549
+
550
+ let invalid_badges = Badge :: update_crate ( & conn, & krate, Some ( & badges) ) . unwrap ( ) ;
551
+ assert_eq ! ( invalid_badges. len( ) , 1 ) ;
552
+ assert ! ( invalid_badges. contains( & "maintenance" ) ) ;
553
+ assert_eq ! ( krate. badges( & conn) . unwrap( ) , vec![ ] ) ;
554
+ }
555
+
483
556
#[ test]
484
557
fn unknown_badge ( ) {
485
558
// Add an unknown badge
0 commit comments