github_api 0.8.2 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +20 -1
- data/features/cassettes/issues/events/get.yml +139 -0
- data/features/cassettes/issues/events/list_issue.yml +71 -0
- data/features/cassettes/issues/events/list_repo.yml +222 -0
- data/features/cassettes/issues/labels/list_repo.yml +65 -0
- data/features/cassettes/issues/milestones/create.yml +55 -0
- data/features/cassettes/issues/milestones/delete.yml +46 -0
- data/features/cassettes/issues/milestones/get.yml +175 -0
- data/features/cassettes/issues/milestones/list.yml +54 -0
- data/features/cassettes/issues/milestones/update.yml +53 -0
- data/features/cassettes/repos/contents/archive.yml +43 -84
- data/features/cassettes/say/custom.yml +60 -0
- data/features/cassettes/say/random.yml +60 -0
- data/features/issues/events.feature +38 -0
- data/features/issues/labels.feature +14 -0
- data/features/issues/milestones.feature +62 -0
- data/features/say.feature +68 -0
- data/features/step_definitions/common_steps.rb +6 -0
- data/features/support/helpers.rb +4 -0
- data/lib/github_api.rb +2 -0
- data/lib/github_api/client.rb +8 -0
- data/lib/github_api/constants.rb +4 -0
- data/lib/github_api/issues.rb +74 -46
- data/lib/github_api/issues/assignees.rb +2 -1
- data/lib/github_api/issues/events.rb +3 -3
- data/lib/github_api/issues/milestones.rb +0 -1
- data/lib/github_api/rate_limit.rb +2 -0
- data/lib/github_api/result.rb +13 -0
- data/lib/github_api/say.rb +24 -0
- data/lib/github_api/scopes.rb +19 -0
- data/lib/github_api/version.rb +1 -1
- data/spec/github/git_data/git_data_spec.rb +19 -0
- data/spec/github/issues/assignees/check_spec.rb +46 -0
- data/spec/github/issues/assignees/list_spec.rb +47 -0
- data/spec/github/issues/assignees_spec.rb +0 -96
- data/spec/github/issues/create_spec.rb +60 -0
- data/spec/github/issues/edit_spec.rb +61 -0
- data/spec/github/issues/events_spec.rb +4 -4
- data/spec/github/issues/get_spec.rb +49 -0
- data/spec/github/issues/issues_spec.rb +19 -0
- data/spec/github/issues/list_spec.rb +90 -0
- data/spec/github/issues/milestones/create_spec.rb +56 -0
- data/spec/github/issues/milestones/delete_spec.rb +42 -0
- data/spec/github/issues/milestones/get_spec.rb +49 -0
- data/spec/github/issues/milestones/list_spec.rb +52 -0
- data/spec/github/issues/milestones/update_spec.rb +57 -0
- data/spec/github/issues/milestones_spec.rb +1 -276
- data/spec/github/scopes/list_spec.rb +33 -0
- data/spec/github/users/followers/follow_spec.rb +33 -0
- data/spec/github/users/followers/following_spec.rb +65 -0
- data/spec/github/users/followers/is_following_spec.rb +41 -0
- data/spec/github/users/followers/list_spec.rb +2 -8
- data/spec/github/users/followers/unfollow_spec.rb +33 -0
- data/spec/github/users/users_spec.rb +16 -0
- metadata +68 -35
- data/spec/github/git_data_spec.rb +0 -11
- data/spec/github/issues_spec.rb +0 -284
- data/spec/github/users/followers_spec.rb +0 -172
@@ -1,101 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Github::Issues::Assignees do
|
4
|
-
let(:github) { Github::Issues::Assignees.new }
|
5
|
-
let(:user) { 'peter-murach' }
|
6
|
-
let(:repo) { 'github' }
|
7
|
-
let(:assignee) { 'octocat' }
|
8
|
-
|
9
|
-
after { github.user, github.repo, github.oauth_token = nil, nil, nil }
|
10
|
-
|
11
|
-
describe '#list' do
|
12
|
-
context 'resources found' do
|
13
|
-
before do
|
14
|
-
stub_get("/repos/#{user}/#{repo}/assignees").
|
15
|
-
to_return(:body => fixture('repos/assignees.json'),
|
16
|
-
:status => 200,
|
17
|
-
:headers => {:content_type => "application/json; charset=utf-8"})
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should get the resources' do
|
21
|
-
github.list user, repo
|
22
|
-
a_get("/repos/#{user}/#{repo}/assignees").should have_been_made
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should return array of resources" do
|
26
|
-
assignees = github.list user, repo
|
27
|
-
assignees.should be_an Array
|
28
|
-
assignees.should have(1).items
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should be a mash type" do
|
32
|
-
assignees = github.list user, repo
|
33
|
-
assignees.first.should be_a Hashie::Mash
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should get collaborator information" do
|
37
|
-
assignees = github.list user, repo
|
38
|
-
assignees.first.login.should == 'octocat'
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should yield to a block" do
|
42
|
-
github.should_receive(:list).with(user, repo).and_yield('web')
|
43
|
-
github.list(user, repo) { |param| 'web' }
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "resource not found" do
|
48
|
-
before do
|
49
|
-
stub_get("/repos/#{user}/#{repo}/assignees").
|
50
|
-
to_return(:body => "", :status => [404, "Not Found"],
|
51
|
-
:headers => {:content_type => "application/json; charset=utf-8"})
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should return 404 with a message 'Not Found'" do
|
55
|
-
expect {
|
56
|
-
github.list user, repo
|
57
|
-
}.to raise_error(Github::Error::NotFound)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end # list
|
61
|
-
|
62
|
-
describe '#check' do
|
63
|
-
context "resource found " do
|
64
|
-
before do
|
65
|
-
stub_get("/repos/#{user}/#{repo}/assignees/#{assignee}").
|
66
|
-
to_return(:body => '', :status => 204,
|
67
|
-
:headers => {:content_type => "application/json; charset=utf-8"})
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should fail to get resource without collaborator name" do
|
71
|
-
expect {
|
72
|
-
github.check user, repo, nil
|
73
|
-
}.to raise_error(ArgumentError)
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should get the resource" do
|
77
|
-
github.check user, repo, assignee
|
78
|
-
a_get("/repos/#{user}/#{repo}/assignees/#{assignee}").should have_been_made
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should find assignee" do
|
82
|
-
github.should_receive(:check).with(user, repo, assignee) { true }
|
83
|
-
github.check user, repo, assignee
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
context "resource not found" do
|
88
|
-
before do
|
89
|
-
stub_get("/repos/#{user}/#{repo}/assignees/#{assignee}").
|
90
|
-
to_return(:body => '', :status => 404,
|
91
|
-
:headers => {:content_type => "application/json; charset=utf-8"})
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should fail to retrieve resource" do
|
95
|
-
github.should_receive(:check).with(user, repo, assignee) { false }
|
96
|
-
github.check user, repo, assignee
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end # check
|
100
4
|
|
101
5
|
end # Github::Repos::Assignees
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Github::Issues, '#create' do
|
6
|
+
let(:user) { 'peter-murach' }
|
7
|
+
let(:repo) { 'github' }
|
8
|
+
let(:request_path) { "/repos/#{user}/#{repo}/issues" }
|
9
|
+
let(:inputs) {
|
10
|
+
{
|
11
|
+
"title" => "Found a bug",
|
12
|
+
"body" => "I'm having a problem with this.",
|
13
|
+
"assignee" => "octocat",
|
14
|
+
"milestone" => 1,
|
15
|
+
"labels" => [
|
16
|
+
"Label1",
|
17
|
+
"Label2"
|
18
|
+
]
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
before {
|
23
|
+
stub_post(request_path).with(inputs).
|
24
|
+
to_return(:body => body, :status => status,
|
25
|
+
:headers => {:content_type => "application/json; charset=utf-8"})
|
26
|
+
}
|
27
|
+
|
28
|
+
after { reset_authentication_for(subject) }
|
29
|
+
|
30
|
+
context "resouce created" do
|
31
|
+
let(:body) { fixture('issues/issue.json') }
|
32
|
+
let(:status) { 201 }
|
33
|
+
|
34
|
+
it "should fail to create resource if 'title' input is missing" do
|
35
|
+
expect {
|
36
|
+
subject.create user, repo, inputs.except('title')
|
37
|
+
}.to raise_error(Github::Error::RequiredParams)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should create resource successfully" do
|
41
|
+
subject.create user, repo, inputs
|
42
|
+
a_post(request_path).with(inputs).should have_been_made
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return the resource" do
|
46
|
+
issue = subject.create user, repo, inputs
|
47
|
+
issue.should be_a Hashie::Mash
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should get the issue information" do
|
51
|
+
issue = subject.create(user, repo, inputs)
|
52
|
+
issue.title.should == 'Found a bug'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
it_should_behave_like 'request failure' do
|
57
|
+
let(:requestable) { subject.create user, repo, inputs }
|
58
|
+
end
|
59
|
+
|
60
|
+
end # create
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Github::Issues, '#create' do
|
6
|
+
let(:user) { 'peter-murach' }
|
7
|
+
let(:repo) { 'github' }
|
8
|
+
let(:issue_id) { 1347 }
|
9
|
+
let(:request_path) { "/repos/#{user}/#{repo}/issues/#{issue_id}" }
|
10
|
+
let(:inputs) {
|
11
|
+
{
|
12
|
+
"title" => "Found a bug",
|
13
|
+
"body" => "I'm having a problem with this.",
|
14
|
+
"assignee" => "octocat",
|
15
|
+
"milestone" => 1,
|
16
|
+
"labels" => [
|
17
|
+
"Label1",
|
18
|
+
"Label2"
|
19
|
+
]
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
before {
|
24
|
+
stub_patch(request_path).with(inputs).
|
25
|
+
to_return(:body => body, :status => status,
|
26
|
+
:headers => {:content_type => "application/json; charset=utf-8"})
|
27
|
+
}
|
28
|
+
|
29
|
+
after { reset_authentication_for(subject) }
|
30
|
+
|
31
|
+
context "resource edited successfully" do
|
32
|
+
let(:body) { fixture("issues/issue.json") }
|
33
|
+
let(:status) { 200 }
|
34
|
+
|
35
|
+
it "should fail to edit without 'user/repo' parameters" do
|
36
|
+
expect {
|
37
|
+
subject.edit nil, repo, issue_id
|
38
|
+
}.to raise_error(ArgumentError)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should edit the resource" do
|
42
|
+
subject.edit user, repo, issue_id, inputs
|
43
|
+
a_patch(request_path).with(inputs).should have_been_made
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should return resource" do
|
47
|
+
issue = subject.edit user, repo, issue_id, inputs
|
48
|
+
issue.should be_a Hashie::Mash
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should be able to retrieve information" do
|
52
|
+
issue = subject.edit user, repo, issue_id, inputs
|
53
|
+
issue.title.should == 'Found a bug'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it_should_behave_like 'request failure' do
|
58
|
+
let(:requestable) { subject.edit user, repo, issue_id, inputs }
|
59
|
+
end
|
60
|
+
|
61
|
+
end # edit
|
@@ -76,23 +76,23 @@ describe Github::Issues::Events do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
it "should get the resources" do
|
79
|
-
github.issues.events.list user, repo, issue_id
|
79
|
+
github.issues.events.list user, repo, :issue_id => issue_id
|
80
80
|
a_get("/repos/#{user}/#{repo}/issues/#{issue_id}/events").should have_been_made
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should return array of resources" do
|
84
|
-
events = github.issues.events.list user, repo, issue_id
|
84
|
+
events = github.issues.events.list user, repo, :issue_id => issue_id
|
85
85
|
events.should be_an Array
|
86
86
|
events.should have(1).items
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should be a mash type" do
|
90
|
-
events = github.issues.events.list user, repo, issue_id
|
90
|
+
events = github.issues.events.list user, repo, :issue_id => issue_id
|
91
91
|
events.first.should be_a Hashie::Mash
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should get issue information" do
|
95
|
-
events = github.issues.events.list user, repo, issue_id
|
95
|
+
events = github.issues.events.list user, repo, :issue_id => issue_id
|
96
96
|
events.first.actor.login.should == 'octocat'
|
97
97
|
end
|
98
98
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Github::Issues, '#get' do
|
6
|
+
let(:user) { 'peter-murach' }
|
7
|
+
let(:repo) { 'github' }
|
8
|
+
let(:issue_id) { 1347 }
|
9
|
+
let(:request_path) { "/repos/#{user}/#{repo}/issues/#{issue_id}" }
|
10
|
+
|
11
|
+
before {
|
12
|
+
stub_get(request_path).to_return(:body => body, :status => status,
|
13
|
+
:headers => {:content_type => "application/json; charset=utf-8"})
|
14
|
+
}
|
15
|
+
|
16
|
+
after { reset_authentication_for(subject) }
|
17
|
+
|
18
|
+
context "resource found" do
|
19
|
+
let(:body) { fixture('issues/issue.json') }
|
20
|
+
let(:status) { 200 }
|
21
|
+
|
22
|
+
it { should respond_to :find }
|
23
|
+
|
24
|
+
it "should fail to get resource without issue id" do
|
25
|
+
expect { subject.get user, repo, nil }.to raise_error(ArgumentError)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should get the resource" do
|
29
|
+
subject.get user, repo, issue_id
|
30
|
+
a_get(request_path).should have_been_made
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should get issue information" do
|
34
|
+
issue = subject.get user, repo, issue_id
|
35
|
+
issue.number.should == issue_id
|
36
|
+
issue.title.should == 'Found a bug'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return mash" do
|
40
|
+
issue = subject.get user, repo, issue_id
|
41
|
+
issue.should be_a Hashie::Mash
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
it_should_behave_like 'request failure' do
|
46
|
+
let(:requestable) { subject.get user, repo, issue_id }
|
47
|
+
end
|
48
|
+
|
49
|
+
end # get
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Github::Issues do
|
6
|
+
|
7
|
+
after { reset_authentication_for subject }
|
8
|
+
|
9
|
+
its(:assignees) { should be_a Github::Issues::Assignees }
|
10
|
+
|
11
|
+
its(:comments) { should be_a Github::Issues::Comments }
|
12
|
+
|
13
|
+
its(:events) { should be_a Github::Issues::Events }
|
14
|
+
|
15
|
+
its(:labels) { should be_a Github::Issues::Labels }
|
16
|
+
|
17
|
+
its(:milestones) { should be_a Github::Issues::Milestones }
|
18
|
+
|
19
|
+
end # Github::Issues
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Github::Issues, '#list' do
|
6
|
+
let(:request_path) { "/issues" }
|
7
|
+
let(:body) { fixture('issues/issues.json') }
|
8
|
+
let(:status) { 200 }
|
9
|
+
|
10
|
+
before {
|
11
|
+
stub_get(request_path).to_return(:body => body, :status => status,
|
12
|
+
:headers => {:content_type => "application/json; charset=utf-8"})
|
13
|
+
}
|
14
|
+
|
15
|
+
after { reset_authentication_for(subject) }
|
16
|
+
|
17
|
+
context "resource found" do
|
18
|
+
|
19
|
+
it { should respond_to(:all) }
|
20
|
+
|
21
|
+
it "should get the resources" do
|
22
|
+
subject.list
|
23
|
+
a_get(request_path).should have_been_made
|
24
|
+
end
|
25
|
+
|
26
|
+
it_should_behave_like 'an array of resources' do
|
27
|
+
let(:requestable) { subject.list }
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should get issue information" do
|
31
|
+
issues = subject.list
|
32
|
+
issues.first.title.should == 'Found a bug'
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should yield to a block" do
|
36
|
+
yielded = []
|
37
|
+
result = subject.list { |obj| yielded << obj }
|
38
|
+
yielded.should == result
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'for a given organization' do
|
43
|
+
let(:org) { 'github' }
|
44
|
+
let(:request_path) { "/orgs/#{org}/issues" }
|
45
|
+
|
46
|
+
it 'should get the resources' do
|
47
|
+
subject.list :org => org
|
48
|
+
a_get(request_path).should have_been_made
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'for an user' do
|
53
|
+
let(:request_path) { "/user/issues" }
|
54
|
+
|
55
|
+
it 'should get the resources' do
|
56
|
+
subject.list :user
|
57
|
+
a_get(request_path).should have_been_made
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "for a repository" do
|
62
|
+
let(:user) { 'peter-murach' }
|
63
|
+
let(:repo) { 'github' }
|
64
|
+
let(:request_path) { "/repos/#{user}/#{repo}/issues" }
|
65
|
+
|
66
|
+
it "should get the resources" do
|
67
|
+
subject.list :user => user, :repo => repo
|
68
|
+
a_get(request_path).should have_been_made
|
69
|
+
end
|
70
|
+
|
71
|
+
it_should_behave_like 'an array of resources' do
|
72
|
+
let(:requestable) { subject.list :user => user, :repo => repo }
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should get repository issue information" do
|
76
|
+
repo_issues = subject.list :user => user, :repo => repo
|
77
|
+
repo_issues.first.title.should == 'Found a bug'
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should yield to a block" do
|
81
|
+
yielded = []
|
82
|
+
result = subject.list(:user => user, :repo => repo) { |obj| yielded << obj }
|
83
|
+
yielded.should == result
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it_should_behave_like 'request failure' do
|
88
|
+
let(:requestable) { subject.list }
|
89
|
+
end
|
90
|
+
end # list
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Github::Issues::Milestones, '#create' do
|
6
|
+
let(:user) { 'peter-murach' }
|
7
|
+
let(:repo) { 'github' }
|
8
|
+
let(:request_path) { "/repos/#{user}/#{repo}/milestones" }
|
9
|
+
let(:inputs) {
|
10
|
+
{
|
11
|
+
"title" => "String",
|
12
|
+
"state" => "open or closed",
|
13
|
+
"description" => "String",
|
14
|
+
"due_on" => "Time"
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
before {
|
19
|
+
stub_post(request_path).with(inputs).
|
20
|
+
to_return(:body => body, :status => status,
|
21
|
+
:headers => {:content_type => "application/json; charset=utf-8"})
|
22
|
+
}
|
23
|
+
|
24
|
+
after { reset_authentication_for(subject) }
|
25
|
+
|
26
|
+
context "resouce created" do
|
27
|
+
let(:body) { fixture('issues/milestone.json') }
|
28
|
+
let(:status) { 201 }
|
29
|
+
|
30
|
+
it "should fail to create resource if 'title' input is missing" do
|
31
|
+
expect {
|
32
|
+
subject.create user, repo, inputs.except('title')
|
33
|
+
}.to raise_error(Github::Error::RequiredParams)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should create resource successfully" do
|
37
|
+
subject.create user, repo, inputs
|
38
|
+
a_post(request_path).with(inputs).should have_been_made
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return the resource" do
|
42
|
+
milestone = subject.create user, repo, inputs
|
43
|
+
milestone.should be_a Hashie::Mash
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should get the milestone information" do
|
47
|
+
milestone = subject.create user, repo, inputs
|
48
|
+
milestone.title.should == 'v1.0'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it_should_behave_like 'request failure' do
|
53
|
+
let(:requestable) { subject.create user, repo, inputs }
|
54
|
+
end
|
55
|
+
|
56
|
+
end # create
|