Skip to content

Commit b3e0fd8

Browse files
committed
Add spec and fixtures for successful check
1 parent 8007252 commit b3e0fd8

File tree

8 files changed

+456
-4
lines changed

8 files changed

+456
-4
lines changed

lib/contribution-checker/checker.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ def commit_in_valid_branch?
115115

116116
# The compare status should be "identical" or "behind" if the commit is in
117117
# the default branch
118-
unless default_compare &&
119-
%w(identical behind).include?(default_compare[:status])
118+
if default_compare.nil? ||
119+
!(%w(identical behind).include?(default_compare[:status]))
120120

121121
# If the commit is not in the default branch, check the gh-pages branch
122122
begin
@@ -171,7 +171,7 @@ def user_has_starred_repo?
171171
#
172172
# @return [Boolean]
173173
def user_is_repo_org_member?
174-
false if @repo[:owner] != "Organization"
174+
return false if @repo[:owner] != "Organization"
175175
@client.organization_member? @repo[:owner][:login], @user[:login]
176176
end
177177

spec/contribution-checker/checker_spec.rb

+39
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,45 @@
4747
end
4848
end
4949

50+
context "when a commit is successfully checked" do
51+
let(:checker) { checker = ContributionChecker::Checker.new \
52+
:access_token => "token",
53+
:commit_url => "https://github.com/jdennes/contribution-checker/commit/731e83d4abf1bd67ac6ab68d18387693482e47cf"
54+
}
55+
56+
before do
57+
stub_get("/repos/jdennes/contribution-checker/commits/731e83d4abf1bd67ac6ab68d18387693482e47cf").
58+
to_return(json_response("commit.json"))
59+
stub_get("/repos/jdennes/contribution-checker").
60+
to_return(json_response("repo.json"))
61+
stub_get("/user").
62+
to_return(json_response("user.json"))
63+
stub_get("/repos/jdennes/contribution-checker/compare/master...731e83d4abf1bd67ac6ab68d18387693482e47cf").
64+
to_return(json_response("default_compare.json"))
65+
stub_get("/user/emails").
66+
to_return(json_response("emails.json"))
67+
stub_get("/user/starred/jdennes/contribution-checker").
68+
to_return(:return => 404)
69+
end
70+
71+
it "returns the check result" do
72+
result = checker.check
73+
expect(result).to be_a(Hash)
74+
75+
expect(result[:contribution]).to eq(true)
76+
77+
expect(result[:and_criteria][:commit_in_valid_branch]).to eq(true)
78+
expect(result[:and_criteria][:commit_in_last_year]).to eq(true)
79+
expect(result[:and_criteria][:repo_not_a_fork]).to eq(true)
80+
expect(result[:and_criteria][:commit_email_linked_to_user]).to eq(true)
81+
82+
expect(result[:or_criteria][:user_has_starred_repo]).to eq(false)
83+
expect(result[:or_criteria][:user_can_push_to_repo]).to eq(true)
84+
expect(result[:or_criteria][:user_is_repo_org_member]).to eq(false)
85+
expect(result[:or_criteria][:user_has_fork_of_repo]).to eq(false)
86+
end
87+
end
88+
5089
end
5190

5291
end

spec/fixtures/commit.json

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
{
2+
"sha": "731e83d4abf1bd67ac6ab68d18387693482e47cf",
3+
"commit": {
4+
"author": {
5+
"name": "James Dennes",
6+
"email": "[email protected]",
7+
"date": "2014-06-08T10:25:34Z"
8+
},
9+
"committer": {
10+
"name": "James Dennes",
11+
"email": "[email protected]",
12+
"date": "2014-06-08T10:25:34Z"
13+
},
14+
"message": "Version 0.0.2",
15+
"tree": {
16+
"sha": "30d937ac96b77183e8df7f319acc1e4387516981",
17+
"url": "https://api.github.com/repos/jdennes/contribution-checker/git/trees/30d937ac96b77183e8df7f319acc1e4387516981"
18+
},
19+
"url": "https://api.github.com/repos/jdennes/contribution-checker/git/commits/731e83d4abf1bd67ac6ab68d18387693482e47cf",
20+
"comment_count": 0
21+
},
22+
"url": "https://api.github.com/repos/jdennes/contribution-checker/commits/731e83d4abf1bd67ac6ab68d18387693482e47cf",
23+
"html_url": "https://github.com/jdennes/contribution-checker/commit/731e83d4abf1bd67ac6ab68d18387693482e47cf",
24+
"comments_url": "https://api.github.com/repos/jdennes/contribution-checker/commits/731e83d4abf1bd67ac6ab68d18387693482e47cf/comments",
25+
"author": {
26+
"login": "jdennes",
27+
"id": 65057,
28+
"avatar_url": "https://avatars.githubusercontent.com/u/65057?",
29+
"gravatar_id": "55fd031da91ef9af6e6ed88b101416a1",
30+
"url": "https://api.github.com/users/jdennes",
31+
"html_url": "https://github.com/jdennes",
32+
"followers_url": "https://api.github.com/users/jdennes/followers",
33+
"following_url": "https://api.github.com/users/jdennes/following{/other_user}",
34+
"gists_url": "https://api.github.com/users/jdennes/gists{/gist_id}",
35+
"starred_url": "https://api.github.com/users/jdennes/starred{/owner}{/repo}",
36+
"subscriptions_url": "https://api.github.com/users/jdennes/subscriptions",
37+
"organizations_url": "https://api.github.com/users/jdennes/orgs",
38+
"repos_url": "https://api.github.com/users/jdennes/repos",
39+
"events_url": "https://api.github.com/users/jdennes/events{/privacy}",
40+
"received_events_url": "https://api.github.com/users/jdennes/received_events",
41+
"type": "User",
42+
"site_admin": true
43+
},
44+
"committer": {
45+
"login": "jdennes",
46+
"id": 65057,
47+
"avatar_url": "https://avatars.githubusercontent.com/u/65057?",
48+
"gravatar_id": "55fd031da91ef9af6e6ed88b101416a1",
49+
"url": "https://api.github.com/users/jdennes",
50+
"html_url": "https://github.com/jdennes",
51+
"followers_url": "https://api.github.com/users/jdennes/followers",
52+
"following_url": "https://api.github.com/users/jdennes/following{/other_user}",
53+
"gists_url": "https://api.github.com/users/jdennes/gists{/gist_id}",
54+
"starred_url": "https://api.github.com/users/jdennes/starred{/owner}{/repo}",
55+
"subscriptions_url": "https://api.github.com/users/jdennes/subscriptions",
56+
"organizations_url": "https://api.github.com/users/jdennes/orgs",
57+
"repos_url": "https://api.github.com/users/jdennes/repos",
58+
"events_url": "https://api.github.com/users/jdennes/events{/privacy}",
59+
"received_events_url": "https://api.github.com/users/jdennes/received_events",
60+
"type": "User",
61+
"site_admin": true
62+
},
63+
"parents": [
64+
{
65+
"sha": "5514532ab61216d1d7d242fd624a2f215d225a31",
66+
"url": "https://api.github.com/repos/jdennes/contribution-checker/commits/5514532ab61216d1d7d242fd624a2f215d225a31",
67+
"html_url": "https://github.com/jdennes/contribution-checker/commit/5514532ab61216d1d7d242fd624a2f215d225a31"
68+
}
69+
],
70+
"stats": {
71+
"total": 2,
72+
"additions": 1,
73+
"deletions": 1
74+
},
75+
"files": [
76+
{
77+
"sha": "d8853e79dea5d3235cb470f4ea1de0ec2d17bcb5",
78+
"filename": "lib/contribution-checker/version.rb",
79+
"status": "modified",
80+
"additions": 1,
81+
"deletions": 1,
82+
"changes": 2,
83+
"blob_url": "https://github.com/jdennes/contribution-checker/blob/731e83d4abf1bd67ac6ab68d18387693482e47cf/lib/contribution-checker/version.rb",
84+
"raw_url": "https://github.com/jdennes/contribution-checker/raw/731e83d4abf1bd67ac6ab68d18387693482e47cf/lib/contribution-checker/version.rb",
85+
"contents_url": "https://api.github.com/repos/jdennes/contribution-checker/contents/lib/contribution-checker/version.rb?ref=731e83d4abf1bd67ac6ab68d18387693482e47cf",
86+
"patch": "@@ -1,3 +1,3 @@\n module ContributionChecker\n- VERSION = \"0.0.1\"\n+ VERSION = \"0.0.2\"\n end"
87+
}
88+
]
89+
}

spec/fixtures/default_compare.json

+157
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
{
2+
"url": "https://api.github.com/repos/jdennes/contribution-checker/compare/master...731e83d4abf1bd67ac6ab68d18387693482e47cf",
3+
"html_url": "https://github.com/jdennes/contribution-checker/compare/master...731e83d4abf1bd67ac6ab68d18387693482e47cf",
4+
"permalink_url": "https://github.com/jdennes/contribution-checker/compare/jdennes:8007252...jdennes:731e83d",
5+
"diff_url": "https://github.com/jdennes/contribution-checker/compare/master...731e83d4abf1bd67ac6ab68d18387693482e47cf.diff",
6+
"patch_url": "https://github.com/jdennes/contribution-checker/compare/master...731e83d4abf1bd67ac6ab68d18387693482e47cf.patch",
7+
"base_commit": {
8+
"sha": "80072520cb4a9dc70dabbc61492d94c962abdc0b",
9+
"commit": {
10+
"author": {
11+
"name": "James Dennes",
12+
"email": "[email protected]",
13+
"date": "2014-06-08T22:47:15Z"
14+
},
15+
"committer": {
16+
"name": "James Dennes",
17+
"email": "[email protected]",
18+
"date": "2014-06-08T22:47:15Z"
19+
},
20+
"message": "Add ContributionChecker::InvalidAccessTokenError",
21+
"tree": {
22+
"sha": "bad7a5547a5b973d74492aba53adb1da02aecb9c",
23+
"url": "https://api.github.com/repos/jdennes/contribution-checker/git/trees/bad7a5547a5b973d74492aba53adb1da02aecb9c"
24+
},
25+
"url": "https://api.github.com/repos/jdennes/contribution-checker/git/commits/80072520cb4a9dc70dabbc61492d94c962abdc0b",
26+
"comment_count": 0
27+
},
28+
"url": "https://api.github.com/repos/jdennes/contribution-checker/commits/80072520cb4a9dc70dabbc61492d94c962abdc0b",
29+
"html_url": "https://github.com/jdennes/contribution-checker/commit/80072520cb4a9dc70dabbc61492d94c962abdc0b",
30+
"comments_url": "https://api.github.com/repos/jdennes/contribution-checker/commits/80072520cb4a9dc70dabbc61492d94c962abdc0b/comments",
31+
"author": {
32+
"login": "jdennes",
33+
"id": 65057,
34+
"avatar_url": "https://avatars.githubusercontent.com/u/65057?",
35+
"gravatar_id": "55fd031da91ef9af6e6ed88b101416a1",
36+
"url": "https://api.github.com/users/jdennes",
37+
"html_url": "https://github.com/jdennes",
38+
"followers_url": "https://api.github.com/users/jdennes/followers",
39+
"following_url": "https://api.github.com/users/jdennes/following{/other_user}",
40+
"gists_url": "https://api.github.com/users/jdennes/gists{/gist_id}",
41+
"starred_url": "https://api.github.com/users/jdennes/starred{/owner}{/repo}",
42+
"subscriptions_url": "https://api.github.com/users/jdennes/subscriptions",
43+
"organizations_url": "https://api.github.com/users/jdennes/orgs",
44+
"repos_url": "https://api.github.com/users/jdennes/repos",
45+
"events_url": "https://api.github.com/users/jdennes/events{/privacy}",
46+
"received_events_url": "https://api.github.com/users/jdennes/received_events",
47+
"type": "User",
48+
"site_admin": true
49+
},
50+
"committer": {
51+
"login": "jdennes",
52+
"id": 65057,
53+
"avatar_url": "https://avatars.githubusercontent.com/u/65057?",
54+
"gravatar_id": "55fd031da91ef9af6e6ed88b101416a1",
55+
"url": "https://api.github.com/users/jdennes",
56+
"html_url": "https://github.com/jdennes",
57+
"followers_url": "https://api.github.com/users/jdennes/followers",
58+
"following_url": "https://api.github.com/users/jdennes/following{/other_user}",
59+
"gists_url": "https://api.github.com/users/jdennes/gists{/gist_id}",
60+
"starred_url": "https://api.github.com/users/jdennes/starred{/owner}{/repo}",
61+
"subscriptions_url": "https://api.github.com/users/jdennes/subscriptions",
62+
"organizations_url": "https://api.github.com/users/jdennes/orgs",
63+
"repos_url": "https://api.github.com/users/jdennes/repos",
64+
"events_url": "https://api.github.com/users/jdennes/events{/privacy}",
65+
"received_events_url": "https://api.github.com/users/jdennes/received_events",
66+
"type": "User",
67+
"site_admin": true
68+
},
69+
"parents": [
70+
{
71+
"sha": "1a048d7745c5ea48eff015063f49369d6c7c3913",
72+
"url": "https://api.github.com/repos/jdennes/contribution-checker/commits/1a048d7745c5ea48eff015063f49369d6c7c3913",
73+
"html_url": "https://github.com/jdennes/contribution-checker/commit/1a048d7745c5ea48eff015063f49369d6c7c3913"
74+
}
75+
]
76+
},
77+
"merge_base_commit": {
78+
"sha": "731e83d4abf1bd67ac6ab68d18387693482e47cf",
79+
"commit": {
80+
"author": {
81+
"name": "James Dennes",
82+
"email": "[email protected]",
83+
"date": "2014-06-08T10:25:34Z"
84+
},
85+
"committer": {
86+
"name": "James Dennes",
87+
"email": "[email protected]",
88+
"date": "2014-06-08T10:25:34Z"
89+
},
90+
"message": "Version 0.0.2",
91+
"tree": {
92+
"sha": "30d937ac96b77183e8df7f319acc1e4387516981",
93+
"url": "https://api.github.com/repos/jdennes/contribution-checker/git/trees/30d937ac96b77183e8df7f319acc1e4387516981"
94+
},
95+
"url": "https://api.github.com/repos/jdennes/contribution-checker/git/commits/731e83d4abf1bd67ac6ab68d18387693482e47cf",
96+
"comment_count": 0
97+
},
98+
"url": "https://api.github.com/repos/jdennes/contribution-checker/commits/731e83d4abf1bd67ac6ab68d18387693482e47cf",
99+
"html_url": "https://github.com/jdennes/contribution-checker/commit/731e83d4abf1bd67ac6ab68d18387693482e47cf",
100+
"comments_url": "https://api.github.com/repos/jdennes/contribution-checker/commits/731e83d4abf1bd67ac6ab68d18387693482e47cf/comments",
101+
"author": {
102+
"login": "jdennes",
103+
"id": 65057,
104+
"avatar_url": "https://avatars.githubusercontent.com/u/65057?",
105+
"gravatar_id": "55fd031da91ef9af6e6ed88b101416a1",
106+
"url": "https://api.github.com/users/jdennes",
107+
"html_url": "https://github.com/jdennes",
108+
"followers_url": "https://api.github.com/users/jdennes/followers",
109+
"following_url": "https://api.github.com/users/jdennes/following{/other_user}",
110+
"gists_url": "https://api.github.com/users/jdennes/gists{/gist_id}",
111+
"starred_url": "https://api.github.com/users/jdennes/starred{/owner}{/repo}",
112+
"subscriptions_url": "https://api.github.com/users/jdennes/subscriptions",
113+
"organizations_url": "https://api.github.com/users/jdennes/orgs",
114+
"repos_url": "https://api.github.com/users/jdennes/repos",
115+
"events_url": "https://api.github.com/users/jdennes/events{/privacy}",
116+
"received_events_url": "https://api.github.com/users/jdennes/received_events",
117+
"type": "User",
118+
"site_admin": true
119+
},
120+
"committer": {
121+
"login": "jdennes",
122+
"id": 65057,
123+
"avatar_url": "https://avatars.githubusercontent.com/u/65057?",
124+
"gravatar_id": "55fd031da91ef9af6e6ed88b101416a1",
125+
"url": "https://api.github.com/users/jdennes",
126+
"html_url": "https://github.com/jdennes",
127+
"followers_url": "https://api.github.com/users/jdennes/followers",
128+
"following_url": "https://api.github.com/users/jdennes/following{/other_user}",
129+
"gists_url": "https://api.github.com/users/jdennes/gists{/gist_id}",
130+
"starred_url": "https://api.github.com/users/jdennes/starred{/owner}{/repo}",
131+
"subscriptions_url": "https://api.github.com/users/jdennes/subscriptions",
132+
"organizations_url": "https://api.github.com/users/jdennes/orgs",
133+
"repos_url": "https://api.github.com/users/jdennes/repos",
134+
"events_url": "https://api.github.com/users/jdennes/events{/privacy}",
135+
"received_events_url": "https://api.github.com/users/jdennes/received_events",
136+
"type": "User",
137+
"site_admin": true
138+
},
139+
"parents": [
140+
{
141+
"sha": "5514532ab61216d1d7d242fd624a2f215d225a31",
142+
"url": "https://api.github.com/repos/jdennes/contribution-checker/commits/5514532ab61216d1d7d242fd624a2f215d225a31",
143+
"html_url": "https://github.com/jdennes/contribution-checker/commit/5514532ab61216d1d7d242fd624a2f215d225a31"
144+
}
145+
]
146+
},
147+
"status": "behind",
148+
"ahead_by": 0,
149+
"behind_by": 10,
150+
"total_commits": 0,
151+
"commits": [
152+
153+
],
154+
"files": [
155+
156+
]
157+
}

spec/fixtures/emails.json

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[
2+
{
3+
"email": "[email protected]",
4+
"primary": false,
5+
"verified": true
6+
},
7+
{
8+
"email": "[email protected]",
9+
"primary": true,
10+
"verified": true
11+
}
12+
]

0 commit comments

Comments
 (0)