github_api 0.7.1 → 0.7.2

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.
Files changed (50) hide show
  1. data/README.md +11 -0
  2. data/lib/github_api/api.rb +20 -22
  3. data/lib/github_api/core_ext/hash.rb +17 -0
  4. data/lib/github_api/events.rb +3 -3
  5. data/lib/github_api/git_data/blobs.rb +2 -2
  6. data/lib/github_api/git_data/commits.rb +2 -2
  7. data/lib/github_api/git_data/references.rb +5 -5
  8. data/lib/github_api/git_data/tags.rb +2 -2
  9. data/lib/github_api/git_data/trees.rb +2 -2
  10. data/lib/github_api/issues.rb +4 -4
  11. data/lib/github_api/issues/comments.rb +6 -6
  12. data/lib/github_api/issues/events.rb +2 -2
  13. data/lib/github_api/issues/labels.rb +10 -10
  14. data/lib/github_api/issues/milestones.rb +5 -5
  15. data/lib/github_api/page_iterator.rb +4 -3
  16. data/lib/github_api/pull_requests.rb +8 -8
  17. data/lib/github_api/pull_requests/comments.rb +5 -5
  18. data/lib/github_api/repos.rb +15 -8
  19. data/lib/github_api/repos/collaborators.rb +4 -4
  20. data/lib/github_api/repos/comments.rb +121 -0
  21. data/lib/github_api/repos/commits.rb +56 -177
  22. data/lib/github_api/repos/contents.rb +3 -0
  23. data/lib/github_api/repos/downloads.rb +4 -4
  24. data/lib/github_api/repos/forks.rb +2 -2
  25. data/lib/github_api/repos/hooks.rb +6 -6
  26. data/lib/github_api/repos/keys.rb +5 -5
  27. data/lib/github_api/repos/merging.rb +1 -0
  28. data/lib/github_api/repos/starring.rb +3 -1
  29. data/lib/github_api/repos/statuses.rb +2 -2
  30. data/lib/github_api/repos/watching.rb +1 -1
  31. data/lib/github_api/version.rb +1 -1
  32. data/spec/github/api/set_spec.rb +19 -0
  33. data/spec/github/repos/comments/create_spec.rb +86 -0
  34. data/spec/github/repos/comments/delete_spec.rb +47 -0
  35. data/spec/github/repos/comments/get_spec.rb +54 -0
  36. data/spec/github/repos/comments/list_spec.rb +120 -0
  37. data/spec/github/repos/comments/update_spec.rb +54 -0
  38. data/spec/github/repos/commits/compare_spec.rb +37 -0
  39. data/spec/github/repos/commits/get_spec.rb +56 -0
  40. data/spec/github/repos/commits/list_spec.rb +63 -0
  41. data/spec/github/repos/downloads/create_spec.rb +66 -0
  42. data/spec/github/repos/downloads/delete_spec.rb +48 -0
  43. data/spec/github/repos/downloads/get_spec.rb +58 -0
  44. data/spec/github/repos/downloads/list_spec.rb +63 -0
  45. data/spec/github/repos/downloads/upload_spec.rb +32 -0
  46. data/spec/github/repos/downloads_spec.rb +1 -233
  47. data/spec/github/repos_spec.rb +2 -0
  48. data/spec/spec_helper.rb +1 -0
  49. metadata +48 -34
  50. data/spec/github/repos/commits_spec.rb +0 -471
@@ -13,6 +13,7 @@ module Github
13
13
  # github.repos.contents.readme 'user-name', 'repo-name'
14
14
  #
15
15
  def readme(user_name, repo_name, params={})
16
+ set :user => user_name, :repo => repo_name
16
17
  normalize! params
17
18
 
18
19
  get_request("/repos/#{user_name}/#{repo_name}/readme", params)
@@ -30,6 +31,7 @@ module Github
30
31
  # github.repos.contents.get 'user-name', 'repo-name', 'path'
31
32
  #
32
33
  def get(user_name, repo_name, path, params={})
34
+ set :user => user_name, :repo => repo_name
33
35
  normalize! params
34
36
 
35
37
  get_request("/repos/#{user_name}/#{repo_name}/contents/#{path}", params)
@@ -56,6 +58,7 @@ module Github
56
58
  # "ref" => "master"
57
59
  #
58
60
  def archive(user_name, repo_name, params={})
61
+ set :user => user_name, :repo => repo_name
59
62
  normalize! params
60
63
  archive_format = params.delete('archive_format') || 'zipball'
61
64
  ref = params.delete('ref') || 'master'
@@ -22,7 +22,7 @@ module Github
22
22
  # github.repos.downloads.list 'user-name', 'repo-name' { |downl| ... }
23
23
  #
24
24
  def list(user_name, repo_name, params={})
25
- _update_user_repo_params(user_name, repo_name)
25
+ set :user => user_name, :repo => repo_name
26
26
  assert_presence_of user, repo
27
27
  normalize! params
28
28
 
@@ -39,7 +39,7 @@ module Github
39
39
  # github.repos.downloads.get 'user-name', 'repo-name', 'download-id'
40
40
  #
41
41
  def get(user_name, repo_name, download_id, params={})
42
- _update_user_repo_params(user_name, repo_name)
42
+ set :user => user_name, :repo => repo_name
43
43
  assert_presence_of user, repo, download_id
44
44
  normalize! params
45
45
 
@@ -54,7 +54,7 @@ module Github
54
54
  # github.repos.downloads.delete 'user-name', 'repo-name', 'download-id'
55
55
  #
56
56
  def delete(user_name, repo_name, download_id, params={})
57
- _update_user_repo_params(user_name, repo_name)
57
+ set :user => user_name, :repo => repo_name
58
58
  assert_presence_of user, repo, download_id
59
59
  normalize! params
60
60
 
@@ -80,7 +80,7 @@ module Github
80
80
  # "content_type" => "text/plain"
81
81
  #
82
82
  def create(user_name, repo_name, params={})
83
- _update_user_repo_params(user_name, repo_name)
83
+ set :user => user_name, :repo => repo_name
84
84
  assert_presence_of user, repo
85
85
 
86
86
  normalize! params
@@ -14,7 +14,7 @@ module Github
14
14
  # github.repos.forks.list 'user-name', 'repo-name' { |fork| ... }
15
15
  #
16
16
  def list(user_name, repo_name, params = {})
17
- _update_user_repo_params(user_name, repo_name)
17
+ set :user => user_name, :repo => repo_name
18
18
  assert_presence_of user, repo
19
19
  normalize! params
20
20
 
@@ -35,7 +35,7 @@ module Github
35
35
  # "org" => "github"
36
36
  #
37
37
  def create(user_name, repo_name, params={})
38
- _update_user_repo_params(user_name, repo_name)
38
+ set :user => user_name, :repo => repo_name
39
39
  assert_presence_of user, repo
40
40
  normalize! params
41
41
  filter! %w[ org ], params
@@ -43,7 +43,7 @@ module Github
43
43
  # github.repos.hooks.list 'user-name', 'repo-name' { |hook| ... }
44
44
  #
45
45
  def list(user_name, repo_name, params={})
46
- _update_user_repo_params(user_name, repo_name)
46
+ set :user => user_name, :repo => repo_name
47
47
  assert_presence_of user, repo
48
48
  normalize! params
49
49
 
@@ -60,7 +60,7 @@ module Github
60
60
  # github.repos.hooks.get 'user-name', 'repo-name'
61
61
  #
62
62
  def get(user_name, repo_name, hook_id, params={})
63
- _update_user_repo_params(user_name, repo_name)
63
+ set :user => user_name, :repo => repo_name
64
64
  assert_presence_of user, repo, hook_id
65
65
  normalize! params
66
66
 
@@ -87,7 +87,7 @@ module Github
87
87
  # }
88
88
  #
89
89
  def create(user_name, repo_name, params={})
90
- _update_user_repo_params(user_name, repo_name)
90
+ set :user => user_name, :repo => repo_name
91
91
  assert_presence_of user, repo
92
92
 
93
93
  normalize! params
@@ -119,7 +119,7 @@ module Github
119
119
  # }
120
120
  #
121
121
  def edit(user_name, repo_name, hook_id, params={})
122
- _update_user_repo_params(user_name, repo_name)
122
+ set :user => user_name, :repo => repo_name
123
123
  assert_presence_of user, repo, hook_id
124
124
 
125
125
  normalize! params
@@ -138,7 +138,7 @@ module Github
138
138
  # github.repos.hooks.test 'user-name', 'repo-name', 'hook-id'
139
139
  #
140
140
  def test(user_name, repo_name, hook_id, params={})
141
- _update_user_repo_params(user_name, repo_name)
141
+ set :user => user_name, :repo => repo_name
142
142
  assert_presence_of user, repo, hook_id
143
143
  normalize! params
144
144
 
@@ -152,7 +152,7 @@ module Github
152
152
  # github.repos.hooks.delete 'user-name', 'repo-name', 'hook-id'
153
153
  #
154
154
  def delete(user_name, repo_name, hook_id, params={})
155
- _update_user_repo_params(user_name, repo_name)
155
+ set :user => user_name, :repo => repo_name
156
156
  assert_presence_of user, repo, hook_id
157
157
  normalize! params
158
158
 
@@ -13,7 +13,7 @@ module Github
13
13
  # github.repos.keys.list 'user-name', 'repo-name' { |key| ... }
14
14
  #
15
15
  def list(user_name, repo_name, params={})
16
- _update_user_repo_params(user_name, repo_name)
16
+ set :user => user_name, :repo => repo_name
17
17
  assert_presence_of user, repo
18
18
  normalize! params
19
19
 
@@ -30,7 +30,7 @@ module Github
30
30
  # github.repos.keys.get 'user-name', 'repo-name', 'key-id'
31
31
  #
32
32
  def get(user_name, repo_name, key_id, params={})
33
- _update_user_repo_params(user_name, repo_name)
33
+ set :user => user_name, :repo => repo_name
34
34
  assert_presence_of user, repo, key_id
35
35
  normalize! params
36
36
 
@@ -51,7 +51,7 @@ module Github
51
51
  # "key" => "ssh-rsa AAA..."
52
52
  #
53
53
  def create(user_name, repo_name, params={})
54
- _update_user_repo_params(user_name, repo_name)
54
+ set :user => user_name, :repo => repo_name
55
55
  assert_presence_of user, repo
56
56
  normalize! params
57
57
  filter! VALID_KEY_PARAM_NAMES, params
@@ -73,7 +73,7 @@ module Github
73
73
  # "key" => "ssh-rsa AAA..."
74
74
  #
75
75
  def edit(user_name, repo_name, key_id, params={})
76
- _update_user_repo_params(user_name, repo_name)
76
+ set :user => user_name, :repo => repo_name
77
77
  assert_presence_of user, repo, key_id
78
78
 
79
79
  normalize! params
@@ -89,7 +89,7 @@ module Github
89
89
  # @github.repos.keys.delete 'user-name', 'repo-name', 'key-id'
90
90
  #
91
91
  def delete(user_name, repo_name, key_id, params={})
92
- _update_user_repo_params(user_name, repo_name)
92
+ set :user => user_name, :repo => repo_name
93
93
  assert_presence_of user, repo, key_id
94
94
  normalize! params
95
95
 
@@ -29,6 +29,7 @@ module Github
29
29
  # "commit_message": "Shipped cool_feature!"
30
30
  #
31
31
  def merge(user_name, repo_name, params={})
32
+ set :user => user_name, :repo => repo_name
32
33
  normalize! params
33
34
  filter! VALID_MERGE_PARAM_NAMES, params
34
35
  assert_required_keys REQUIRED_MERGE_PARAMS, params
@@ -13,7 +13,7 @@ module Github
13
13
  # github.repos.starring.list { |star| ... }
14
14
  #
15
15
  def list(user_name, repo_name, params={})
16
- _update_user_repo_params(user_name, repo_name)
16
+ set :user => user_name, :repo => repo_name
17
17
  assert_presence_of user, repo
18
18
  normalize! params
19
19
 
@@ -74,6 +74,7 @@ module Github
74
74
  # github.repos.starring.star 'user-name', 'repo-name'
75
75
  #
76
76
  def star(user_name, repo_name, params={})
77
+ set :user => user_name, :repo => repo_name
77
78
  assert_presence_of user_name, repo_name
78
79
  normalize! params
79
80
  put_request("/user/starred/#{user_name}/#{repo_name}", params)
@@ -88,6 +89,7 @@ module Github
88
89
  # github.repos.starring.unstar 'user-name', 'repo-name'
89
90
  #
90
91
  def unstar(user_name, repo_name, params={})
92
+ set :user => user_name, :repo => repo_name
91
93
  assert_presence_of user_name, repo_name
92
94
  normalize! params
93
95
  delete_request("/user/starred/#{user_name}/#{repo_name}", params)
@@ -22,7 +22,7 @@ module Github
22
22
  # github.repos.statuses.list 'user-name', 'repo-name', 'sha' { |status| ... }
23
23
  #
24
24
  def list(user_name, repo_name, sha, params={})
25
- _update_user_repo_params(user_name, repo_name)
25
+ set :user => user_name, :repo => repo_name
26
26
  assert_presence_of user, repo
27
27
  normalize! params
28
28
 
@@ -50,7 +50,7 @@ module Github
50
50
  # "description" => "Successful build #3 from origin/master"
51
51
  #
52
52
  def create(user_name, repo_name, sha, params={})
53
- _update_user_repo_params(user_name, repo_name)
53
+ set :user => user_name, :repo => repo_name
54
54
  assert_presence_of user, repo
55
55
 
56
56
  normalize! params
@@ -13,7 +13,7 @@ module Github
13
13
  # github.repos.watching.list { |watcher| ... }
14
14
  #
15
15
  def list(user_name, repo_name, params={})
16
- _update_user_repo_params(user_name, repo_name)
16
+ set :user => user_name, :repo => repo_name
17
17
  assert_presence_of user, repo
18
18
  normalize! params
19
19
 
@@ -4,7 +4,7 @@ module Github
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 7
7
- PATCH = 1
7
+ PATCH = 2
8
8
  BUILD = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.');
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::API, '#set' do
6
+
7
+ after { reset_authentication_for subject }
8
+
9
+ it 'requires value to be set' do
10
+ expect { subject.set :option }.to raise_error(ArgumentError)
11
+ end
12
+
13
+ it 'accepts more than one option' do
14
+ subject.set :user => 'user-name', :repo => 'repo-name'
15
+ subject.user.should == 'user-name'
16
+ subject.repo.should == 'repo-name'
17
+ end
18
+
19
+ end
@@ -0,0 +1,86 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Repos::Comments, '#create' do
6
+ let(:user) { 'peter-murach' }
7
+ let(:repo) { 'github' }
8
+ let(:sha) { '23432dfosfsufd' }
9
+ let(:inputs) do
10
+ { 'body' => 'web',
11
+ :commit_id => 1,
12
+ :line => 1,
13
+ :path => 'file1.txt',
14
+ :position => 4 }
15
+ end
16
+ let(:request_path) { "/repos/#{user}/#{repo}/commits/#{sha}/comments" }
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('repos/commit_comment.json') }
28
+ let(:status) { 201 }
29
+
30
+ it "should fail to create resource if 'body' input is missing" do
31
+ expect {
32
+ subject.create user, repo, sha, inputs.except('body')
33
+ }.to raise_error(Github::Error::RequiredParams)
34
+ end
35
+
36
+ it "should fail to create resource if 'commit_id' input is missing" do
37
+ expect {
38
+ subject.create user, repo, sha, inputs.except(:commit_id)
39
+ }.to raise_error(Github::Error::RequiredParams)
40
+ end
41
+
42
+ it "should fail to create resource if 'line' input is missing" do
43
+ expect {
44
+ subject.create user, repo, sha, inputs.except(:line)
45
+ }.to raise_error(Github::Error::RequiredParams)
46
+ end
47
+
48
+ it "should fail to create resource if 'path' input is missing" do
49
+ expect {
50
+ subject.create user, repo, sha, inputs.except(:path)
51
+ }.to raise_error(Github::Error::RequiredParams)
52
+ end
53
+
54
+ it "should fail to create resource if 'position' input is missing" do
55
+ expect {
56
+ subject.create user, repo, sha, inputs.except(:position)
57
+ }.to raise_error(Github::Error::RequiredParams)
58
+ end
59
+
60
+ it "should create resource successfully" do
61
+ subject.create user, repo, sha, inputs
62
+ a_post(request_path).with(inputs).should have_been_made
63
+ end
64
+
65
+ it "should return the resource" do
66
+ comment = subject.create user, repo, sha, inputs
67
+ comment.should be_a Hashie::Mash
68
+ end
69
+
70
+ it "should get the commit comment information" do
71
+ comment = subject.create user, repo, sha, inputs
72
+ comment.user.login.should == 'octocat'
73
+ end
74
+ end
75
+
76
+ context "failed to create resource" do
77
+ let(:body) { '' }
78
+ let(:status) { 404 }
79
+
80
+ it "should fail to retrieve resource" do
81
+ expect {
82
+ subject.create user, repo, sha, inputs
83
+ }.to raise_error(Github::Error::NotFound)
84
+ end
85
+ end
86
+ end # create
@@ -0,0 +1,47 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Repos::Comments, '#delete' do
6
+ let(:user) { 'peter-murach' }
7
+ let(:repo) { 'github' }
8
+ let(:comment_id) { 1 }
9
+ let(:request_path) { "/repos/#{user}/#{repo}/comments/#{comment_id}" }
10
+
11
+ before {
12
+ stub_delete(request_path).
13
+ to_return(:body => body, :status => status,
14
+ :headers => { :content_type => "application/json; charset=utf-8"})
15
+ }
16
+
17
+ context "resource deleted successfully" do
18
+ let(:body) { '' }
19
+ let(:status) { 204 }
20
+
21
+ it "should fail to delete without 'user/repo' parameters" do
22
+ expect { subject.delete }.to raise_error(ArgumentError)
23
+ end
24
+
25
+ it "should fail to delete resource without 'comment_id'" do
26
+ expect {
27
+ subject.delete user, repo, nil
28
+ }.to raise_error(ArgumentError)
29
+ end
30
+
31
+ it "should delete the resource" do
32
+ subject.delete user, repo, comment_id
33
+ a_delete(request_path).should have_been_made
34
+ end
35
+ end
36
+
37
+ context "failed to delete resource" do
38
+ let(:body) { '' }
39
+ let(:status) { 404 }
40
+
41
+ it "should fail to find resource" do
42
+ expect {
43
+ subject.delete user, repo, comment_id
44
+ }.to raise_error(Github::Error::NotFound)
45
+ end
46
+ end
47
+ end # delete
@@ -0,0 +1,54 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Repos::Comments, '#get' do
6
+ let(:user) { 'peter-murach' }
7
+ let(:repo) { 'github' }
8
+ let(:comment_id) { 1 }
9
+ let(:request_path) { "/repos/#{user}/#{repo}/comments/#{comment_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('repos/commit_comment.json') }
20
+ let(:status) { 200 }
21
+
22
+ it { should respond_to(:find) }
23
+
24
+ it "should fail to get resource without comment 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, comment_id
30
+ a_get(request_path).should have_been_made
31
+ end
32
+
33
+ it "should get commit comment information" do
34
+ commit_comment = subject.get user, repo, comment_id
35
+ commit_comment.user.login.should == 'octocat'
36
+ end
37
+
38
+ it "should return mash" do
39
+ commit_comment = subject.get user, repo, comment_id
40
+ commit_comment.should be_a Hashie::Mash
41
+ end
42
+ end
43
+
44
+ context "resource not found" do
45
+ let(:body) { '' }
46
+ let(:status) { 404 }
47
+
48
+ it "should fail to retrive resource" do
49
+ expect {
50
+ subject.get user, repo, comment_id
51
+ }.to raise_error(Github::Error::NotFound)
52
+ end
53
+ end
54
+ end # get