Skip to content

Commit d11819c

Browse files
Merge pull request #742 from marti1125/master
add new badges #704
2 parents 66d5d92 + 14f1b4c commit d11819c

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

src/badge.rs

+13
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,19 @@ pub enum Badge {
4040
branch: Option<String>,
4141
service: Option<String>,
4242
},
43+
Maintenance { value: MaintenanceValue },
44+
}
45+
46+
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
47+
#[serde(rename_all = "kebab-case")]
48+
pub enum MaintenanceValue {
49+
ActivelyDeveloped,
50+
PassivelyMaintained,
51+
AsIs,
52+
None,
53+
Experimental,
54+
LookingForMaintainer,
55+
Deprecated,
4356
}
4457

4558
#[derive(PartialEq, Debug, Serialize, Deserialize)]

src/tests/badge.rs

+74-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use cargo_registry::app::App;
2-
use cargo_registry::badge::Badge;
2+
use cargo_registry::badge::{Badge, MaintenanceValue};
33
use cargo_registry::krate::Crate;
44

55
use std::collections::HashMap;
@@ -22,6 +22,8 @@ struct BadgeRef {
2222
coveralls_attributes: HashMap<String, String>,
2323
circle_ci: Badge,
2424
circle_ci_attributes: HashMap<String, String>,
25+
maintenance: Badge,
26+
maintenance_attributes: HashMap<String, String>,
2527
}
2628

2729
fn set_up() -> (Arc<App>, Crate, BadgeRef) {
@@ -106,6 +108,13 @@ fn set_up() -> (Arc<App>, Crate, BadgeRef) {
106108
badge_attributes_circle_ci.insert(String::from("branch"), String::from("beta"));
107109
badge_attributes_circle_ci.insert(String::from("repository"), String::from("rust-lang/rust"));
108110

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+
109118
let badges = BadgeRef {
110119
appveyor: appveyor,
111120
appveyor_attributes: badge_attributes_appveyor,
@@ -124,6 +133,8 @@ fn set_up() -> (Arc<App>, Crate, BadgeRef) {
124133
coveralls_attributes: badge_attributes_coveralls,
125134
circle_ci: circle_ci,
126135
circle_ci_attributes: badge_attributes_circle_ci,
136+
maintenance,
137+
maintenance_attributes,
127138
};
128139
(app, krate, badges)
129140
}
@@ -247,6 +258,21 @@ fn update_add_circle_ci() {
247258
assert_eq!(krate.badges(&conn).unwrap(), vec![test_badges.circle_ci]);
248259
}
249260

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+
250276
#[test]
251277
fn replace_badge() {
252278
// Replacing one badge with another
@@ -480,6 +506,53 @@ fn circle_ci_required_keys() {
480506
assert_eq!(krate.badges(&conn).unwrap(), vec![]);
481507
}
482508

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+
483556
#[test]
484557
fn unknown_badge() {
485558
// Add an unknown badge

0 commit comments

Comments
 (0)