Skip to content

Commit 4fe7d4f

Browse files
committed
1 parent 6f5e217 commit 4fe7d4f

File tree

4 files changed

+81
-0
lines changed

4 files changed

+81
-0
lines changed

app/components/badge-github.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Component from '@ember/component';
2+
import { computed } from '@ember/object';
3+
import { alias } from '@ember/object/computed';
4+
5+
export default Component.extend({
6+
tagName: 'span',
7+
classNames: ['badge'],
8+
repository: alias('badge.attributes.repository'),
9+
workflow: alias('badge.attributes.workflow'),
10+
text: computed('badge', function() {
11+
return `GitHub workflow status for the ${this.workflow} workflow`;
12+
}),
13+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<a href="https://github.com/{{ repository }}/actions">
2+
<img
3+
src="https://github.com/{{ repository }}/workflows/{{ workflow }}/badge.svg"
4+
alt="{{ text }}"
5+
title="{{ text }}">
6+
</a>

src/models/badge.rs

+5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ pub enum Badge {
3939
pipeline: String,
4040
build: Option<String>,
4141
},
42+
#[serde(rename = "github")]
43+
GitHub {
44+
repository: String,
45+
workflow: String,
46+
},
4247
#[serde(rename = "gitlab")]
4348
GitLab {
4449
repository: String,

src/tests/badge.rs

+57
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ struct BadgeRef {
77
appveyor_attributes: HashMap<String, String>,
88
travis_ci: Badge,
99
travis_ci_attributes: HashMap<String, String>,
10+
github: Badge,
11+
github_attributes: HashMap<String, String>,
1012
gitlab: Badge,
1113
gitlab_attributes: HashMap<String, String>,
1214
azure_devops: Badge,
@@ -76,6 +78,14 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
7678
badge_attributes_travis_ci.insert(String::from("branch"), String::from("beta"));
7779
badge_attributes_travis_ci.insert(String::from("repository"), String::from("rust-lang/rust"));
7880

81+
let github = Badge::GitHub {
82+
repository: String::from("rust-lang/rust"),
83+
workflow: String::from("build"),
84+
};
85+
let mut badge_attributes_github = HashMap::new();
86+
badge_attributes_github.insert(String::from("repository"), String::from("rust-lang/rust"));
87+
badge_attributes_github.insert(String::from("workflow"), String::from("build"));
88+
7989
let gitlab = Badge::GitLab {
8090
branch: Some(String::from("beta")),
8191
repository: String::from("rust-lang/rust"),
@@ -158,6 +168,8 @@ fn set_up() -> (BadgeTestCrate, BadgeRef) {
158168
appveyor_attributes: badge_attributes_appveyor,
159169
travis_ci,
160170
travis_ci_attributes: badge_attributes_travis_ci,
171+
github,
172+
github_attributes: badge_attributes_github,
161173
gitlab,
162174
gitlab_attributes: badge_attributes_gitlab,
163175
azure_devops,
@@ -213,6 +225,17 @@ fn update_add_travis_ci() {
213225
assert_eq!(krate.badges(), vec![test_badges.travis_ci]);
214226
}
215227

228+
#[test]
229+
fn update_add_github() {
230+
// Add a github badge
231+
let (krate, test_badges) = set_up();
232+
233+
let mut badges = HashMap::new();
234+
badges.insert(String::from("github"), test_badges.github_attributes);
235+
krate.update(&badges);
236+
assert_eq!(krate.badges(), vec![test_badges.github]);
237+
}
238+
216239
#[test]
217240
fn update_add_gitlab() {
218241
// Add a gitlab badge
@@ -432,6 +455,40 @@ fn travis_ci_required_keys() {
432455
assert_eq!(krate.badges(), vec![]);
433456
}
434457

458+
#[test]
459+
fn github_required_keys() {
460+
{
461+
// Add a github badge missing a required field
462+
let (krate, mut test_badges) = set_up();
463+
464+
let mut badges = HashMap::new();
465+
466+
// Repository is a required key
467+
test_badges.github_attributes.remove("repository");
468+
badges.insert(String::from("github"), test_badges.github_attributes);
469+
470+
let invalid_badges = krate.update(&badges);
471+
assert_eq!(invalid_badges.len(), 1);
472+
assert_eq!(invalid_badges.first().unwrap(), "github");
473+
assert_eq!(krate.badges(), vec![]);
474+
}
475+
476+
{
477+
let (krate, mut test_badges) = set_up();
478+
479+
let mut badges = HashMap::new();
480+
481+
// Workflow is a required key
482+
test_badges.github_attributes.remove("workflow");
483+
badges.insert(String::from("github"), test_badges.github_attributes);
484+
485+
let invalid_badges = krate.update(&badges);
486+
assert_eq!(invalid_badges.len(), 1);
487+
assert_eq!(invalid_badges.first().unwrap(), "github");
488+
assert_eq!(krate.badges(), vec![]);
489+
}
490+
}
491+
435492
#[test]
436493
fn gitlab_required_keys() {
437494
// Add a gitlab badge missing a required field

0 commit comments

Comments
 (0)