From 8037d9929401b62505ac081b6e6e6811aa2016f4 Mon Sep 17 00:00:00 2001 From: Roberto Huertas Date: Mon, 5 Nov 2018 01:02:38 +0100 Subject: [PATCH 1/4] add support for azure devops badge --- app/components/badge-azure-devops.js | 16 +++++++ .../components/badge-azure-devops.hbs | 3 ++ mirage/fixtures/crates.js | 8 ++++ src/models/badge.rs | 5 ++ src/tests/badge.rs | 48 +++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 app/components/badge-azure-devops.js create mode 100644 app/templates/components/badge-azure-devops.hbs diff --git a/app/components/badge-azure-devops.js b/app/components/badge-azure-devops.js new file mode 100644 index 00000000000..89335afd9f1 --- /dev/null +++ b/app/components/badge-azure-devops.js @@ -0,0 +1,16 @@ +import Component from '@ember/component'; +import { computed } from '@ember/object'; +import { alias } from '@ember/object/computed'; + +export default Component.extend({ + tagName: 'span', + classNames: ['badge'], + project: alias('badge.attributes.project'), + pipeline: alias('badge.attributes.pipeline'), + build: computed('badge.attributes.build', function() { + return this.get('badge.attributes.build') || '1'; + }), + text: computed('pipeline', function() { + return `Azure Devops build status for the ${this.pipeline} pipeline`; + }), +}); diff --git a/app/templates/components/badge-azure-devops.hbs b/app/templates/components/badge-azure-devops.hbs new file mode 100644 index 00000000000..8b39bac3ccd --- /dev/null +++ b/app/templates/components/badge-azure-devops.hbs @@ -0,0 +1,3 @@ + + {{ text }} + diff --git a/mirage/fixtures/crates.js b/mirage/fixtures/crates.js index 3e01974beb0..e1d009be14f 100644 --- a/mirage/fixtures/crates.js +++ b/mirage/fixtures/crates.js @@ -52,6 +52,14 @@ export default [ repository: 'https://github.com/huonw/external_mixin', updated_at: '2015-02-27T11:52:13Z', badges: [ + { + attributes: { + project: 'robertohuertasm/github-oss', + pipeline: 'microserver', + build: '2', + }, + badge_type: 'azure-devops', + }, { attributes: { repository: 'huonw/external_mixin', diff --git a/src/models/badge.rs b/src/models/badge.rs index 936466fc180..ca93ed34345 100644 --- a/src/models/badge.rs +++ b/src/models/badge.rs @@ -34,6 +34,11 @@ pub enum Badge { project_name: Option, service: Option, }, + AzureDevops { + project: String, + pipeline: String, + build: Option, + }, #[serde(rename = "gitlab")] GitLab { repository: String, diff --git a/src/tests/badge.rs b/src/tests/badge.rs index 9acdda0fb5b..8072bc549d1 100644 --- a/src/tests/badge.rs +++ b/src/tests/badge.rs @@ -9,6 +9,8 @@ struct BadgeRef { travis_ci_attributes: HashMap, gitlab: Badge, gitlab_attributes: HashMap, + azure_devops: Badge, + azure_devops_attributes: HashMap, isitmaintained_issue_resolution: Badge, isitmaintained_issue_resolution_attributes: HashMap, isitmaintained_open_issues: Badge, @@ -80,6 +82,16 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) { badge_attributes_gitlab.insert(String::from("branch"), String::from("beta")); badge_attributes_gitlab.insert(String::from("repository"), String::from("rust-lang/rust")); + let azure_devops = Badge::AzureDevops { + project: String::from("rust-lang"), + pipeline: String::from("rust"), + build: Some(String::from("2")), + }; + let mut badge_attributes_azure_devops = HashMap::new(); + badge_attributes_azure_devops.insert(String::from("project"), String::from("rust-lang")); + badge_attributes_azure_devops.insert(String::from("pipeline"), String::from("rust")); + badge_attributes_azure_devops.insert(String::from("build"), String::from("2")); + let isitmaintained_issue_resolution = Badge::IsItMaintainedIssueResolution { repository: String::from("rust-lang/rust"), }; @@ -138,6 +150,8 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) { travis_ci_attributes: badge_attributes_travis_ci, gitlab, gitlab_attributes: badge_attributes_gitlab, + azure_devops, + azure_devops_attributes: badge_attributes_azure_devops, isitmaintained_issue_resolution, isitmaintained_issue_resolution_attributes: badge_attributes_isitmaintained_issue_resolution, @@ -198,6 +212,20 @@ fn update_add_gitlab() { assert_eq!(krate.badges(), vec![test_badges.gitlab]); } +#[test] +fn update_add_azure_devops() { + // Add a azure devops badge + let (conn, krate, test_badges) = set_up(); + + let mut badges = HashMap::new(); + badges.insert( + String::from("azure-devops"), + test_badges.azure_devops_attributes, + ); + Badge::update_crate(&conn, &krate, Some(&badges)).unwrap(); + assert_eq!(krate.badges(&conn).unwrap(), vec![test_badges.azure_devops]); +} + #[test] fn update_add_isitmaintained_issue_resolution() { // Add a isitmaintained_issue_resolution badge @@ -398,6 +426,26 @@ fn gitlab_required_keys() { assert_eq!(krate.badges(), vec![]); } +#[test] +fn azure_devops_required_keys() { + // Add a azure devops badge missing a required field + let (conn, krate, mut test_badges) = set_up(); + + let mut badges = HashMap::new(); + + // project is a required key + test_badges.gitlab_attributes.remove("project"); + badges.insert( + String::from("azure-devops"), + test_badges.azure_devops_attributes, + ); + + let invalid_badges = Badge::update_crate(&conn, &krate, Some(&badges)).unwrap(); + assert_eq!(invalid_badges.len(), 1); + assert!(invalid_badges.contains(&"azure-devops")); + assert_eq!(krate.badges(&conn).unwrap(), vec![]); +} + #[test] fn isitmaintained_issue_resolution_required_keys() { // Add a isitmaintained_issue_resolution badge missing a required field From 8e6cbd6f56f7fe5bdac0d9b4c371eeec3021b7bb Mon Sep 17 00:00:00 2001 From: Roberto Huertas Date: Mon, 5 Nov 2018 10:21:10 +0100 Subject: [PATCH 2/4] cargo fmt applied --- src/models/badge.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/models/badge.rs b/src/models/badge.rs index ca93ed34345..a01dc213141 100644 --- a/src/models/badge.rs +++ b/src/models/badge.rs @@ -21,7 +21,11 @@ pub struct CrateBadge { } #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case", tag = "badge_type", content = "attributes")] +#[serde( + rename_all = "kebab-case", + tag = "badge_type", + content = "attributes" +)] pub enum Badge { TravisCi { repository: String, From d10bd5c41cbb1f703f258d4065ddcb2a39176ed3 Mon Sep 17 00:00:00 2001 From: Roberto Huertas Date: Mon, 5 Nov 2018 10:24:39 +0100 Subject: [PATCH 3/4] fixed test --- src/tests/badge.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/badge.rs b/src/tests/badge.rs index 8072bc549d1..f05a13678d0 100644 --- a/src/tests/badge.rs +++ b/src/tests/badge.rs @@ -434,7 +434,7 @@ fn azure_devops_required_keys() { let mut badges = HashMap::new(); // project is a required key - test_badges.gitlab_attributes.remove("project"); + test_badges.azure_devops_attributes.remove("project"); badges.insert( String::from("azure-devops"), test_badges.azure_devops_attributes, From 5eba14377500d9190bdd3c52a0e1dfb9e4546ece Mon Sep 17 00:00:00 2001 From: Roberto Huertas Date: Tue, 12 Feb 2019 23:10:17 +0100 Subject: [PATCH 4/4] fixed merging issues --- src/models/badge.rs | 6 +----- src/tests/badge.rs | 14 +++++++------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/models/badge.rs b/src/models/badge.rs index a01dc213141..ca93ed34345 100644 --- a/src/models/badge.rs +++ b/src/models/badge.rs @@ -21,11 +21,7 @@ pub struct CrateBadge { } #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] -#[serde( - rename_all = "kebab-case", - tag = "badge_type", - content = "attributes" -)] +#[serde(rename_all = "kebab-case", tag = "badge_type", content = "attributes")] pub enum Badge { TravisCi { repository: String, diff --git a/src/tests/badge.rs b/src/tests/badge.rs index f05a13678d0..c81f691ff56 100644 --- a/src/tests/badge.rs +++ b/src/tests/badge.rs @@ -215,15 +215,15 @@ fn update_add_gitlab() { #[test] fn update_add_azure_devops() { // Add a azure devops badge - let (conn, krate, test_badges) = set_up(); + let (krate, test_badges) = set_up(); let mut badges = HashMap::new(); badges.insert( String::from("azure-devops"), test_badges.azure_devops_attributes, ); - Badge::update_crate(&conn, &krate, Some(&badges)).unwrap(); - assert_eq!(krate.badges(&conn).unwrap(), vec![test_badges.azure_devops]); + krate.update(&badges); + assert_eq!(krate.badges(), vec![test_badges.azure_devops]); } #[test] @@ -429,7 +429,7 @@ fn gitlab_required_keys() { #[test] fn azure_devops_required_keys() { // Add a azure devops badge missing a required field - let (conn, krate, mut test_badges) = set_up(); + let (krate, mut test_badges) = set_up(); let mut badges = HashMap::new(); @@ -440,10 +440,10 @@ fn azure_devops_required_keys() { test_badges.azure_devops_attributes, ); - let invalid_badges = Badge::update_crate(&conn, &krate, Some(&badges)).unwrap(); + let invalid_badges = krate.update(&badges); assert_eq!(invalid_badges.len(), 1); - assert!(invalid_badges.contains(&"azure-devops")); - assert_eq!(krate.badges(&conn).unwrap(), vec![]); + assert_eq!(invalid_badges.first().unwrap(), "azure-devops"); + assert_eq!(krate.badges(), vec![]); } #[test]