github_api 0.4.11 → 0.5.0.rc1

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 (109) hide show
  1. data/README.md +76 -72
  2. data/features/cassettes/gists/starred.yml +48 -0
  3. data/features/cassettes/pagination/repos/commits/list.yml +193 -0
  4. data/features/cassettes/pagination/repos/commits/next.yml +183 -0
  5. data/features/cassettes/pagination/repos/diff/next.yml +45 -0
  6. data/features/cassettes/pagination/repos/list.yml +176 -0
  7. data/features/cassettes/pagination/repos/list/next.yml +222 -0
  8. data/features/cassettes/pagination/repos/per_page/each_page.yml +45 -0
  9. data/features/cassettes/repos/list.yml +92 -0
  10. data/features/error_codes.feature +1 -1
  11. data/features/gists.feature +12 -3
  12. data/features/gists/comments.feature +3 -3
  13. data/features/github_api.feature +13 -2
  14. data/features/pagination.feature +40 -39
  15. data/features/repos.feature +2 -2
  16. data/features/step_definitions/common_steps.rb +12 -0
  17. data/features/step_definitions/github_api_steps.rb +12 -1
  18. data/lib/github_api.rb +1 -1
  19. data/lib/github_api/api.rb +4 -2
  20. data/lib/github_api/api_factory.rb +11 -5
  21. data/lib/github_api/authorizations.rb +23 -32
  22. data/lib/github_api/client.rb +1 -0
  23. data/lib/github_api/events.rb +38 -38
  24. data/lib/github_api/filter.rb +1 -1
  25. data/lib/github_api/gists.rb +47 -42
  26. data/lib/github_api/gists/comments.rb +77 -84
  27. data/lib/github_api/git_data.rb +25 -6
  28. data/lib/github_api/git_data/blobs.rb +48 -45
  29. data/lib/github_api/git_data/commits.rb +76 -73
  30. data/lib/github_api/git_data/references.rb +137 -118
  31. data/lib/github_api/git_data/tags.rb +74 -70
  32. data/lib/github_api/git_data/trees.rb +88 -85
  33. data/lib/github_api/issues.rb +43 -31
  34. data/lib/github_api/issues/comments.rb +116 -119
  35. data/lib/github_api/issues/events.rb +20 -19
  36. data/lib/github_api/issues/labels.rb +200 -197
  37. data/lib/github_api/issues/milestones.rb +137 -134
  38. data/lib/github_api/orgs.rb +27 -23
  39. data/lib/github_api/orgs/members.rb +105 -108
  40. data/lib/github_api/orgs/teams.rb +236 -237
  41. data/lib/github_api/paged_request.rb +1 -1
  42. data/lib/github_api/pull_requests.rb +40 -42
  43. data/lib/github_api/pull_requests/comments.rb +140 -143
  44. data/lib/github_api/repos.rb +101 -67
  45. data/lib/github_api/repos/collaborators.rb +64 -68
  46. data/lib/github_api/repos/commits.rb +50 -39
  47. data/lib/github_api/repos/downloads.rb +107 -110
  48. data/lib/github_api/repos/forks.rb +38 -39
  49. data/lib/github_api/repos/hooks.rb +161 -167
  50. data/lib/github_api/repos/keys.rb +86 -86
  51. data/lib/github_api/repos/pub_sub_hubbub.rb +99 -87
  52. data/lib/github_api/repos/watching.rb +80 -82
  53. data/lib/github_api/request.rb +5 -9
  54. data/lib/github_api/users.rb +26 -16
  55. data/lib/github_api/users/emails.rb +47 -47
  56. data/lib/github_api/users/followers.rb +85 -86
  57. data/lib/github_api/users/keys.rb +73 -75
  58. data/lib/github_api/validations.rb +25 -0
  59. data/lib/github_api/validations/format.rb +23 -0
  60. data/lib/github_api/validations/presence.rb +25 -0
  61. data/lib/github_api/validations/required.rb +21 -0
  62. data/lib/github_api/validations/token.rb +41 -0
  63. data/lib/github_api/version.rb +3 -3
  64. data/spec/fixtures/repos/commit_comparison.json +112 -0
  65. data/spec/github/api_factory_spec.rb +17 -1
  66. data/spec/github/authorizations_spec.rb +36 -34
  67. data/spec/github/gists/comments_spec.rb +39 -45
  68. data/spec/github/gists_spec.rb +50 -53
  69. data/spec/github/git_data/blobs_spec.rb +27 -20
  70. data/spec/github/git_data/commits_spec.rb +20 -19
  71. data/spec/github/git_data/references_spec.rb +83 -46
  72. data/spec/github/git_data/tags_spec.rb +16 -15
  73. data/spec/github/git_data/trees_spec.rb +20 -19
  74. data/spec/github/git_data_spec.rb +10 -1
  75. data/spec/github/issues/comments_spec.rb +78 -68
  76. data/spec/github/issues/events_spec.rb +42 -34
  77. data/spec/github/issues/labels_spec.rb +89 -101
  78. data/spec/github/issues/milestones_spec.rb +76 -54
  79. data/spec/github/issues_spec.rb +53 -57
  80. data/spec/github/orgs/members_spec.rb +64 -49
  81. data/spec/github/orgs/teams_spec.rb +112 -101
  82. data/spec/github/orgs_spec.rb +41 -31
  83. data/spec/github/paged_request_spec.rb +6 -5
  84. data/spec/github/pull_requests/comments_spec.rb +39 -44
  85. data/spec/github/pull_requests_spec.rb +32 -48
  86. data/spec/github/repos/collaborators_spec.rb +40 -29
  87. data/spec/github/repos/commits_spec.rb +108 -64
  88. data/spec/github/repos/downloads_spec.rb +46 -45
  89. data/spec/github/repos/forks_spec.rb +23 -24
  90. data/spec/github/repos/hooks_spec.rb +69 -71
  91. data/spec/github/repos/keys_spec.rb +39 -34
  92. data/spec/github/repos/pub_sub_hubbub_spec.rb +4 -4
  93. data/spec/github/repos/watching_spec.rb +31 -33
  94. data/spec/github/repos_spec.rb +74 -83
  95. data/spec/github/request_spec.rb +31 -2
  96. data/spec/github/users/emails_spec.rb +19 -17
  97. data/spec/github/users/followers_spec.rb +30 -28
  98. data/spec/github/users/keys_spec.rb +37 -33
  99. data/spec/github/users_spec.rb +124 -125
  100. data/spec/github/validations/format_spec.rb +42 -0
  101. data/spec/github/validations/presence_spec.rb +18 -0
  102. data/spec/github/validations/required_spec.rb +28 -0
  103. data/spec/github/validations/token_spec.rb +19 -0
  104. data/spec/github/validations_spec.rb +23 -0
  105. metadata +33 -10
  106. data/features/cassettes/pagination/repos.yml +0 -177
  107. data/features/cassettes/pagination/repos/next.yml +0 -177
  108. data/lib/github_api/validation.rb +0 -53
  109. data/spec/github/validation_spec.rb +0 -62
@@ -13,45 +13,45 @@ describe Github::Repos::Downloads do
13
13
  it { described_class::VALID_DOWNLOAD_PARAM_NAMES.should_not be_nil }
14
14
  it { described_class::REQUIRED_PARAMS.should_not be_nil }
15
15
 
16
- describe "downloads" do
17
- it { github.repos.should respond_to :downloads }
18
- it { github.repos.should respond_to :list_downloads }
19
- it { github.repos.should respond_to :get_downloads }
16
+ describe "#list" do
17
+ it { github.repos.downloads.should respond_to :list }
20
18
 
21
19
  context "resource found" do
22
20
  before do
23
21
  stub_get("/repos/#{user}/#{repo}/downloads").
24
- to_return(:body => fixture('repos/downloads.json'), :status => 200, :headers => {:content_type => "application/json; charset=utf-8"})
22
+ to_return(:body => fixture('repos/downloads.json'), :status => 200,
23
+ :headers => {:content_type => "application/json; charset=utf-8"})
25
24
  end
26
25
 
27
26
  it "should fail to get resource without username" do
28
- expect { github.repos.downloads }.to raise_error(ArgumentError)
27
+ expect { github.repos.downloads.list }.to raise_error(ArgumentError)
29
28
  end
30
29
 
31
30
  it "should get the resources" do
32
- github.repos.downloads user, repo
31
+ github.repos.downloads.list user, repo
33
32
  a_get("/repos/#{user}/#{repo}/downloads").should have_been_made
34
33
  end
35
34
 
36
35
  it "should return array of resources" do
37
- downloads = github.repos.downloads user, repo
36
+ downloads = github.repos.downloads.list user, repo
38
37
  downloads.should be_an Array
39
38
  downloads.should have(1).items
40
39
  end
41
40
 
42
41
  it "should be a mash type" do
43
- downloads = github.repos.downloads user, repo
42
+ downloads = github.repos.downloads.list user, repo
44
43
  downloads.first.should be_a Hashie::Mash
45
44
  end
46
45
 
47
46
  it "should get download information" do
48
- downloads = github.repos.downloads user, repo
47
+ downloads = github.repos.downloads.list user, repo
49
48
  downloads.first.name.should == 'new_file.jpg'
50
49
  end
51
50
 
52
51
  it "should yield to a block" do
53
- github.repos.should_receive(:downloads).with(user, repo).and_yield('web')
54
- github.repos.downloads(user, repo) { |param| 'web' }
52
+ github.repos.downloads.should_receive(:list).
53
+ with(user, repo).and_yield('web')
54
+ github.repos.downloads.list(user, repo) { |param| 'web' }
55
55
  end
56
56
  end
57
57
 
@@ -63,43 +63,43 @@ describe Github::Repos::Downloads do
63
63
 
64
64
  it "should return 404 with a message 'Not Found'" do
65
65
  expect {
66
- github.repos.downloads user, repo
66
+ github.repos.downloads.list user, repo
67
67
  }.to raise_error(Github::Error::NotFound)
68
68
  end
69
69
  end
70
- end # downloads
70
+ end # list
71
71
 
72
- describe "download" do
72
+ describe "#get" do
73
73
  let(:download_id) { 1 }
74
74
 
75
- it { github.repos.should respond_to :download }
76
- it { github.repos.should respond_to :get_download }
75
+ it { github.repos.downloads.should respond_to :find }
77
76
 
78
77
  context "resource found" do
79
78
  before do
80
79
  stub_get("/repos/#{user}/#{repo}/downloads/#{download_id}").
81
- to_return(:body => fixture('repos/download.json'), :status => 200, :headers => {:content_type => "application/json; charset=utf-8"})
80
+ to_return(:body => fixture('repos/download.json'), :status => 200,
81
+ :headers => {:content_type => "application/json; charset=utf-8"})
82
82
  end
83
83
 
84
84
  it "should fail to get resource without download id" do
85
85
  expect {
86
- github.repos.download(user, repo, nil)
86
+ github.repos.downloads.get user, repo, nil
87
87
  }.to raise_error(ArgumentError)
88
88
  end
89
89
 
90
90
  it "should get the resource" do
91
- github.repos.download user, repo, download_id
91
+ github.repos.downloads.get user, repo, download_id
92
92
  a_get("/repos/#{user}/#{repo}/downloads/#{download_id}").should have_been_made
93
93
  end
94
94
 
95
95
  it "should get download information" do
96
- download = github.repos.download user, repo, download_id
96
+ download = github.repos.downloads.get user, repo, download_id
97
97
  download.id.should == download_id
98
98
  download.name.should == 'new_file.jpg'
99
99
  end
100
100
 
101
101
  it "should return mash" do
102
- download = github.repos.download user, repo, download_id
102
+ download = github.repos.downloads.get user, repo, download_id
103
103
  download.should be_a Hashie::Mash
104
104
  end
105
105
  end
@@ -112,34 +112,34 @@ describe Github::Repos::Downloads do
112
112
 
113
113
  it "should fail to retrive resource" do
114
114
  expect {
115
- github.repos.download user, repo, download_id
115
+ github.repos.downloads.get user, repo, download_id
116
116
  }.to raise_error(Github::Error::NotFound)
117
117
  end
118
118
  end
119
- end # download
119
+ end # get
120
120
 
121
- describe "delete_download" do
121
+ describe "#delete" do
122
122
  let(:download_id) { 1 }
123
123
 
124
124
  context "resource edited successfully" do
125
125
  before do
126
126
  stub_delete("/repos/#{user}/#{repo}/downloads/#{download_id}").
127
- to_return(:body => '', :status => 204, :headers => { :content_type => "application/json; charset=utf-8"})
127
+ to_return(:body => '', :status => 204,
128
+ :headers => { :content_type => "application/json; charset=utf-8"})
128
129
  end
129
130
 
130
131
  it "should fail to delete without 'user/repo' parameters" do
131
- github.user, github.repo = nil, nil
132
- expect { github.repos.delete_download }.to raise_error(ArgumentError)
132
+ expect { github.repos.downloads.delete }.to raise_error(ArgumentError)
133
133
  end
134
134
 
135
135
  it "should fail to delete resource without 'download_id'" do
136
136
  expect {
137
- github.repos.delete_download user, repo
137
+ github.repos.downloads.delete user, repo
138
138
  }.to raise_error(ArgumentError)
139
139
  end
140
140
 
141
141
  it "should delete the resource" do
142
- github.repos.delete_download user, repo, download_id
142
+ github.repos.downloads.delete user, repo, download_id
143
143
  a_delete("/repos/#{user}/#{repo}/downloads/#{download_id}").should have_been_made
144
144
  end
145
145
  end
@@ -147,19 +147,19 @@ describe Github::Repos::Downloads do
147
147
  context "failed to edit resource" do
148
148
  before do
149
149
  stub_delete("/repos/#{user}/#{repo}/downloads/#{download_id}").
150
- to_return(:body => fixture("repos/download.json"), :status => 404, :headers => { :content_type => "application/json; charset=utf-8"})
151
-
150
+ to_return(:body => fixture("repos/download.json"), :status => 404,
151
+ :headers => { :content_type => "application/json; charset=utf-8"})
152
152
  end
153
153
 
154
154
  it "should fail to find resource" do
155
155
  expect {
156
- github.repos.delete_download user, repo, download_id
156
+ github.repos.downloads.delete user, repo, download_id
157
157
  }.to raise_error(Github::Error::NotFound)
158
158
  end
159
159
  end
160
- end # delete_download
160
+ end # delete
161
161
 
162
- describe "create_download" do
162
+ describe "#create" do
163
163
  let(:inputs) { {:name => 'new_file.jpg', :size => 114034, :description => "Latest release", :content_type => 'text/plain'} }
164
164
 
165
165
  context "resouce created" do
@@ -171,28 +171,28 @@ describe Github::Repos::Downloads do
171
171
 
172
172
  it "should fail to create resource if 'name' input is missing" do
173
173
  expect {
174
- github.repos.create_download user, repo, inputs.except(:name)
174
+ github.repos.downloads.create user, repo, inputs.except(:name)
175
175
  }.to raise_error(Github::Error::RequiredParams)
176
176
  end
177
177
 
178
178
  it "should failt to create resource if 'size' input is missing" do
179
179
  expect {
180
- github.repos.create_download user, repo, inputs.except(:size)
180
+ github.repos.downloads.create user, repo, inputs.except(:size)
181
181
  }.to raise_error(Github::Error::RequiredParams)
182
182
  end
183
183
 
184
184
  it "should create resource successfully" do
185
- github.repos.create_download user, repo, inputs
185
+ github.repos.downloads.create user, repo, inputs
186
186
  a_post("/repos/#{user}/#{repo}/downloads").with(inputs).should have_been_made
187
187
  end
188
188
 
189
189
  it "should return the resource" do
190
- download = github.repos.create_download user, repo, inputs
190
+ download = github.repos.downloads.create user, repo, inputs
191
191
  download.should be_a Hashie::Mash
192
192
  end
193
193
 
194
194
  it "should get the download information" do
195
- download = github.repos.create_download user, repo, inputs
195
+ download = github.repos.downloads.create user, repo, inputs
196
196
  download.name.should == 'new_file.jpg'
197
197
  end
198
198
  end
@@ -200,16 +200,17 @@ describe Github::Repos::Downloads do
200
200
  context "failed to create resource" do
201
201
  before do
202
202
  stub_post("/repos/#{user}/#{repo}/downloads").with(inputs).
203
- to_return(:body => fixture('repos/download_s3.json'), :status => 404, :headers => {:content_type => "application/json; charset=utf-8"})
203
+ to_return(:body => fixture('repos/download_s3.json'), :status => 404,
204
+ :headers => {:content_type => "application/json; charset=utf-8"})
204
205
  end
205
206
 
206
207
  it "should faile to retrieve resource" do
207
208
  expect {
208
- github.repos.create_download(user, repo, inputs)
209
+ github.repos.downloads.create user, repo, inputs
209
210
  }.to raise_error(Github::Error::NotFound)
210
211
  end
211
212
  end
212
- end # create_download
213
+ end # create
213
214
 
214
215
  describe 'upload' do
215
216
  let(:resource) { stub(:resource) }
@@ -223,14 +224,14 @@ describe Github::Repos::Downloads do
223
224
  end
224
225
 
225
226
  it "should fail if resource is of incorrect type" do
226
- expect { github.repos.upload resource, nil }.to raise_error(ArgumentError)
227
+ expect { github.repos.downloads.upload resource, nil }.to raise_error(ArgumentError)
227
228
  end
228
229
 
229
230
  it "should upload resource successfully" do
230
231
  res = stub(:response, :body => 'success')
231
232
  uploader = stub(:uploader, :send => res)
232
233
  Github::S3Uploader.should_receive(:new).with(resource, filename) { uploader }
233
- github.repos.upload(resource, filename).should == 'success'
234
+ github.repos.downloads.upload(resource, filename).should == 'success'
234
235
  end
235
236
  end
236
237
  end # upload
@@ -7,45 +7,44 @@ describe Github::Repos::Forks do
7
7
 
8
8
  after { github.user, github.repo, github.oauth_token = nil, nil, nil }
9
9
 
10
- describe "forks" do
11
- it { github.repos.should respond_to :forks }
12
- it { github.repos.should respond_to :repo_forks }
13
- it { github.repos.should respond_to :repository_forks }
10
+ describe "#list" do
11
+ it { github.repos.forks.should respond_to :all }
14
12
 
15
13
  context "resource found" do
16
14
  before do
17
15
  stub_get("/repos/#{user}/#{repo}/forks").
18
- to_return(:body => fixture('repos/forks.json'), :status => 200, :headers => {:content_type => "application/json; charset=utf-8"})
16
+ to_return(:body => fixture('repos/forks.json'), :status => 200,
17
+ :headers => {:content_type => "application/json; charset=utf-8"})
19
18
  end
20
19
 
21
20
  it "should fail to get resource without username" do
22
- expect { github.repos.forks }.to raise_error(ArgumentError)
21
+ expect { github.repos.forks.list }.to raise_error(ArgumentError)
23
22
  end
24
23
 
25
24
  it "should get the resources" do
26
- github.repos.forks user, repo
25
+ github.repos.forks.list user, repo
27
26
  a_get("/repos/#{user}/#{repo}/forks").should have_been_made
28
27
  end
29
28
 
30
29
  it "should return array of resources" do
31
- forks = github.repos.forks user, repo
30
+ forks = github.repos.forks.list user, repo
32
31
  forks.should be_an Array
33
32
  forks.should have(1).items
34
33
  end
35
34
 
36
35
  it "should be a mash type" do
37
- forks = github.repos.forks user, repo
36
+ forks = github.repos.forks.list user, repo
38
37
  forks.first.should be_a Hashie::Mash
39
38
  end
40
39
 
41
40
  it "should get fork information" do
42
- forks = github.repos.forks user, repo
41
+ forks = github.repos.forks.list user, repo
43
42
  forks.first.name.should == 'Hello-World'
44
43
  end
45
44
 
46
45
  it "should yield to a block" do
47
- github.repos.should_receive(:forks).with(user, repo).and_yield('web')
48
- github.repos.forks(user, repo) { |param| 'web' }
46
+ github.repos.forks.should_receive(:list).with(user, repo).and_yield('web')
47
+ github.repos.forks.list(user, repo) { |param| 'web' }
49
48
  end
50
49
  end
51
50
 
@@ -57,34 +56,34 @@ describe Github::Repos::Forks do
57
56
 
58
57
  it "should return 404 with a message 'Not Found'" do
59
58
  expect {
60
- github.repos.forks user, repo
59
+ github.repos.forks.list user, repo
61
60
  }.to raise_error(Github::Error::NotFound)
62
61
  end
63
62
  end
64
- end # forks
63
+ end # list
65
64
 
66
- describe "create_hook" do
65
+ describe "#create" do
67
66
  let(:inputs) { {:org => 'github'} }
68
67
 
69
68
  context "resouce created" do
70
69
  before do
71
70
  stub_post("/repos/#{user}/#{repo}/forks").with(inputs).
72
- to_return(:body => fixture('repos/fork.json'), :status => 201, :headers => {:content_type => "application/json; charset=utf-8"})
73
-
71
+ to_return(:body => fixture('repos/fork.json'), :status => 201,
72
+ :headers => {:content_type => "application/json; charset=utf-8"})
74
73
  end
75
74
 
76
75
  it "should create resource successfully" do
77
- github.repos.create_fork(user, repo, inputs)
76
+ github.repos.forks.create(user, repo, inputs)
78
77
  a_post("/repos/#{user}/#{repo}/forks").with(inputs).should have_been_made
79
78
  end
80
79
 
81
80
  it "should return the resource" do
82
- fork = github.repos.create_fork user, repo, inputs
81
+ fork = github.repos.forks.create user, repo, inputs
83
82
  fork.should be_a Hashie::Mash
84
83
  end
85
84
 
86
85
  it "should get the fork information" do
87
- fork = github.repos.create_fork(user, repo, inputs)
86
+ fork = github.repos.forks.create user, repo, inputs
88
87
  fork.name.should == 'Hello-World'
89
88
  end
90
89
  end
@@ -92,16 +91,16 @@ describe Github::Repos::Forks do
92
91
  context "failed to create resource" do
93
92
  before do
94
93
  stub_post("/repos/#{user}/#{repo}/forks").with(inputs).
95
- to_return(:body => fixture('repos/fork.json'), :status => 404, :headers => {:content_type => "application/json; charset=utf-8"})
96
-
94
+ to_return(:body => fixture('repos/fork.json'), :status => 404,
95
+ :headers => {:content_type => "application/json; charset=utf-8"})
97
96
  end
98
97
 
99
98
  it "should faile to retrieve resource" do
100
99
  expect {
101
- github.repos.create_fork user, repo, inputs
100
+ github.repos.forks.create user, repo, inputs
102
101
  }.to raise_error(Github::Error::NotFound)
103
102
  end
104
103
  end
105
- end # create_fork
104
+ end # create
106
105
 
107
106
  end # Github::Repos::Forks
@@ -13,47 +13,44 @@ describe Github::Repos::Hooks do
13
13
  it { described_class::VALID_HOOK_PARAM_VALUES.should_not be_nil }
14
14
  it { described_class::REQUIRED_PARAMS.should_not be_nil }
15
15
 
16
- describe "hooks" do
17
- context 'check aliases' do
18
- it { github.repos.should respond_to :hooks }
19
- it { github.repos.should respond_to :repo_hooks }
20
- it { github.repos.should respond_to :repository_hooks }
21
- end
16
+ describe "#list" do
17
+ it { github.repos.hooks.should respond_to :all }
22
18
 
23
19
  context "resource found" do
24
20
  before do
25
21
  stub_get("/repos/#{user}/#{repo}/hooks").
26
- to_return(:body => fixture('repos/hooks.json'), :status => 200, :headers => {:content_type => "application/json; charset=utf-8"})
22
+ to_return(:body => fixture('repos/hooks.json'), :status => 200,
23
+ :headers => {:content_type => "application/json; charset=utf-8"})
27
24
  end
28
25
 
29
26
  it "should fail to get resource without username" do
30
- expect { github.repos.hooks }.to raise_error(ArgumentError)
27
+ expect { github.repos.hooks.list }.to raise_error(ArgumentError)
31
28
  end
32
29
 
33
30
  it "should get the resources" do
34
- github.repos.hooks user, repo
31
+ github.repos.hooks.list user, repo
35
32
  a_get("/repos/#{user}/#{repo}/hooks").should have_been_made
36
33
  end
37
34
 
38
35
  it "should return array of resources" do
39
- hooks = github.repos.hooks user, repo
36
+ hooks = github.repos.hooks.list user, repo
40
37
  hooks.should be_an Array
41
38
  hooks.should have(1).items
42
39
  end
43
40
 
44
41
  it "should be a mash type" do
45
- hooks = github.repos.hooks user, repo
42
+ hooks = github.repos.hooks.list user, repo
46
43
  hooks.first.should be_a Hashie::Mash
47
44
  end
48
45
 
49
46
  it "should get hook information" do
50
- hooks = github.repos.hooks user, repo
47
+ hooks = github.repos.hooks.list user, repo
51
48
  hooks.first.name.should == 'web'
52
49
  end
53
50
 
54
51
  it "should yield to a block" do
55
- github.repos.should_receive(:hooks).with(user, repo).and_yield('web')
56
- github.repos.hooks(user, repo) { |param| 'web' }
52
+ github.repos.hooks.should_receive(:list).with(user, repo).and_yield('web')
53
+ github.repos.hooks.list(user, repo) { |param| 'web' }
57
54
  end
58
55
  end
59
56
 
@@ -65,46 +62,43 @@ describe Github::Repos::Hooks do
65
62
 
66
63
  it "should return 404 with a message 'Not Found'" do
67
64
  expect {
68
- github.repos.hooks user, repo
65
+ github.repos.hooks.list user, repo
69
66
  }.to raise_error(Github::Error::NotFound)
70
67
  end
71
68
  end
72
- end # hooks
69
+ end # list
73
70
 
74
- describe "hook" do
71
+ describe "#get" do
75
72
  let(:hook_id) { 1 }
76
73
 
77
- context 'check aliases' do
78
- it { github.repos.should respond_to :hook }
79
- it { github.repos.should respond_to :get_hook }
80
- it { github.repos.should respond_to :repo_hook }
81
- it { github.repos.should respond_to :get_repo_hook }
82
- it { github.repos.should respond_to :repository_hook }
83
- end
74
+ it { github.repos.hooks.should respond_to :find }
84
75
 
85
76
  context "resource found" do
86
77
  before do
87
78
  stub_get("/repos/#{user}/#{repo}/hooks/#{hook_id}").
88
- to_return(:body => fixture('repos/hook.json'), :status => 200, :headers => {:content_type => "application/json; charset=utf-8"})
79
+ to_return(:body => fixture('repos/hook.json'), :status => 200,
80
+ :headers => {:content_type => "application/json; charset=utf-8"})
89
81
  end
90
82
 
91
83
  it "should fail to get resource without hook id" do
92
- expect { github.repos.hook(user, repo, nil)}.to raise_error(ArgumentError)
84
+ expect {
85
+ github.repos.hooks.get user, repo, nil
86
+ }.to raise_error(ArgumentError)
93
87
  end
94
88
 
95
89
  it "should get the resource" do
96
- github.repos.hook user, repo, hook_id
90
+ github.repos.hooks.get user, repo, hook_id
97
91
  a_get("/repos/#{user}/#{repo}/hooks/#{hook_id}").should have_been_made
98
92
  end
99
93
 
100
94
  it "should get hook information" do
101
- hook = github.repos.hook user, repo, hook_id
95
+ hook = github.repos.hooks.get user, repo, hook_id
102
96
  hook.id.should == hook_id
103
97
  hook.name.should == 'web'
104
98
  end
105
99
 
106
100
  it "should return mash" do
107
- hook = github.repos.hook user, repo, hook_id
101
+ hook = github.repos.hooks.get user, repo, hook_id
108
102
  hook.should be_a Hashie::Mash
109
103
  end
110
104
  end
@@ -117,13 +111,13 @@ describe Github::Repos::Hooks do
117
111
 
118
112
  it "should fail to retrive resource" do
119
113
  expect {
120
- github.repos.hook user, repo, hook_id
114
+ github.repos.hooks.get user, repo, hook_id
121
115
  }.to raise_error(Github::Error::NotFound)
122
116
  end
123
117
  end
124
- end # hook
118
+ end # get
125
119
 
126
- describe "create_hook" do
120
+ describe "#create" do
127
121
  let(:inputs) {
128
122
  {
129
123
  :name => 'web',
@@ -143,33 +137,34 @@ describe Github::Repos::Hooks do
143
137
  before do
144
138
  stub_post("/repos/#{user}/#{repo}/hooks").
145
139
  with(:body => JSON.generate(inputs.except(:unrelated))).
146
- to_return(:body => fixture('repos/hook.json'), :status => 201, :headers => {:content_type => "application/json; charset=utf-8"})
140
+ to_return(:body => fixture('repos/hook.json'), :status => 201,
141
+ :headers => {:content_type => "application/json; charset=utf-8"})
147
142
  end
148
143
 
149
144
  it "should fail to create resource if 'name' input is missing" do
150
145
  expect {
151
- github.repos.create_hook user, repo, inputs.except(:name)
146
+ github.repos.hooks.create user, repo, inputs.except(:name)
152
147
  }.to raise_error(Github::Error::RequiredParams)
153
148
  end
154
149
 
155
150
  it "should failt to create resource if 'config' input is missing" do
156
151
  expect {
157
- github.repos.create_hook user, repo, inputs.except(:config)
152
+ github.repos.hooks.create user, repo, inputs.except(:config)
158
153
  }.to raise_error(Github::Error::RequiredParams)
159
154
  end
160
155
 
161
156
  it "should create resource successfully" do
162
- github.repos.create_hook user, repo, inputs
157
+ github.repos.hooks.create user, repo, inputs
163
158
  a_post("/repos/#{user}/#{repo}/hooks").with(inputs).should have_been_made
164
159
  end
165
160
 
166
161
  it "should return the resource" do
167
- hook = github.repos.create_hook user, repo, inputs
162
+ hook = github.repos.hooks.create user, repo, inputs
168
163
  hook.should be_a Hashie::Mash
169
164
  end
170
165
 
171
166
  it "should get the hook information" do
172
- hook = github.repos.create_hook(user, repo, inputs)
167
+ hook = github.repos.hooks.create user, repo, inputs
173
168
  hook.name.should == 'web'
174
169
  end
175
170
  end
@@ -177,18 +172,19 @@ describe Github::Repos::Hooks do
177
172
  context "fail to create resource" do
178
173
  before do
179
174
  stub_post("/repos/#{user}/#{repo}/hooks").with(inputs).
180
- to_return(:body => fixture('repos/hook.json'), :status => 404, :headers => {:content_type => "application/json; charset=utf-8"})
175
+ to_return(:body => fixture('repos/hook.json'), :status => 404,
176
+ :headers => {:content_type => "application/json; charset=utf-8"})
181
177
  end
182
178
 
183
179
  it "should fail to retrieve resource" do
184
180
  expect {
185
- github.repos.create_hook user, repo, inputs
181
+ github.repos.hooks.create user, repo, inputs
186
182
  }.to raise_error(Github::Error::NotFound)
187
183
  end
188
184
  end
189
- end # create_hook
185
+ end # create
190
186
 
191
- describe "edit_hook" do
187
+ describe "#edit" do
192
188
  let(:hook_id) { 1 }
193
189
  let(:inputs) {
194
190
  {
@@ -209,45 +205,45 @@ describe Github::Repos::Hooks do
209
205
  before do
210
206
  stub_patch("/repos/#{user}/#{repo}/hooks/#{hook_id}").
211
207
  with(:body => JSON.generate(inputs.except(:unrelated))).
212
- to_return(:body => fixture("repos/hook.json"), :status => 200, :headers => { :content_type => "application/json; charset=utf-8"})
208
+ to_return(:body => fixture("repos/hook.json"), :status => 200,
209
+ :headers => { :content_type => "application/json; charset=utf-8"})
213
210
  end
214
211
 
215
212
  it "should fail to edit without 'user/repo' parameters" do
216
- github.user, github.repo = nil, nil
217
- expect { github.repos.edit_hook }.to raise_error(ArgumentError)
213
+ expect { github.repos.hooks.edit }.to raise_error(ArgumentError)
218
214
  end
219
215
 
220
216
  it "should fail to edit resource without 'name' parameter" do
221
217
  expect{
222
- github.repos.edit_hook user, repo, inputs.except(:name)
218
+ github.repos.hooks.edit user, repo, inputs.except(:name)
223
219
  }.to raise_error(Github::Error::RequiredParams)
224
220
  end
225
221
 
226
222
  it "should fail to edit resource without 'hook_id'" do
227
223
  expect {
228
- github.repos.edit_hook user, repo
224
+ github.repos.hooks.edit user, repo
229
225
  }.to raise_error(ArgumentError)
230
226
  end
231
227
 
232
228
  it "should fail to edit resource without 'config' parameter" do
233
229
  expect {
234
- github.repos.edit_hook user, repo, hook_id, inputs.except(:config)
230
+ github.repos.hooks.edit user, repo, hook_id, inputs.except(:config)
235
231
  }.to raise_error(Github::Error::RequiredParams)
236
232
  end
237
233
 
238
234
  it "should edit the resource" do
239
- github.repos.edit_hook user, repo, hook_id, inputs
235
+ github.repos.hooks.edit user, repo, hook_id, inputs
240
236
  a_patch("/repos/#{user}/#{repo}/hooks/#{hook_id}").
241
237
  with(inputs).should have_been_made
242
238
  end
243
239
 
244
240
  it "should return resource" do
245
- hook = github.repos.edit_hook user, repo, hook_id, inputs
241
+ hook = github.repos.hooks.edit user, repo, hook_id, inputs
246
242
  hook.should be_a Hashie::Mash
247
243
  end
248
244
 
249
245
  it "should be able to retrieve information" do
250
- hook = github.repos.edit_hook user, repo, hook_id, inputs
246
+ hook = github.repos.hooks.edit user, repo, hook_id, inputs
251
247
  hook.name.should == 'web'
252
248
  end
253
249
  end
@@ -255,39 +251,40 @@ describe Github::Repos::Hooks do
255
251
  context "failed to edit resource" do
256
252
  before do
257
253
  stub_patch("/repos/#{user}/#{repo}/hooks/#{hook_id}").with(inputs).
258
- to_return(:body => fixture("repos/hook.json"), :status => 404, :headers => { :content_type => "application/json; charset=utf-8"})
254
+ to_return(:body => fixture("repos/hook.json"), :status => 404,
255
+ :headers => { :content_type => "application/json; charset=utf-8"})
259
256
  end
260
257
 
261
258
  it "should fail to find resource" do
262
259
  expect {
263
- github.repos.edit_hook user, repo, hook_id, inputs
260
+ github.repos.hooks.edit user, repo, hook_id, inputs
264
261
  }.to raise_error(Github::Error::NotFound)
265
262
  end
266
263
  end
267
- end # edit_hook
264
+ end # edit
268
265
 
269
- describe "delete_hook" do
266
+ describe "#delete" do
270
267
  let(:hook_id) { 1 }
271
268
 
272
269
  context "resource removed successfully" do
273
270
  before do
274
271
  stub_delete("/repos/#{user}/#{repo}/hooks/#{hook_id}").
275
- to_return(:body => '', :status => 204, :headers => { :content_type => "application/json; charset=utf-8"})
272
+ to_return(:body => '', :status => 204,
273
+ :headers => { :content_type => "application/json; charset=utf-8"})
276
274
  end
277
275
 
278
276
  it "should fail to delete without 'user/repo' parameters" do
279
- github.user, github.repo = nil, nil
280
- expect { github.repos.delete_hook }.to raise_error(ArgumentError)
277
+ expect { github.repos.hooks.delete }.to raise_error(ArgumentError)
281
278
  end
282
279
 
283
280
  it "should fail to delete resource without 'hook_id'" do
284
281
  expect {
285
- github.repos.delete_hook user, repo
282
+ github.repos.hooks.delete user, repo
286
283
  }.to raise_error(ArgumentError)
287
284
  end
288
285
 
289
286
  it "should delete the resource" do
290
- github.repos.delete_hook user, repo, hook_id
287
+ github.repos.hooks.delete user, repo, hook_id
291
288
  a_delete("/repos/#{user}/#{repo}/hooks/#{hook_id}").should have_been_made
292
289
  end
293
290
  end
@@ -300,34 +297,34 @@ describe Github::Repos::Hooks do
300
297
 
301
298
  it "should fail to find resource" do
302
299
  expect {
303
- github.repos.delete_hook user, repo, hook_id
300
+ github.repos.hooks.delete user, repo, hook_id
304
301
  }.to raise_error(Github::Error::NotFound)
305
302
  end
306
303
  end
307
- end # delete_hook
304
+ end # delete
308
305
 
309
- describe "test_hook" do
306
+ describe "#test" do
310
307
  let(:hook_id) { 1 }
311
308
 
312
309
  context "resource tested successfully" do
313
310
  before do
314
311
  stub_post("/repos/#{user}/#{repo}/hooks/#{hook_id}/test").
315
- to_return(:body => '', :status => 204, :headers => { :content_type => "application/json; charset=utf-8"})
312
+ to_return(:body => '', :status => 204,
313
+ :headers => { :content_type => "application/json; charset=utf-8"})
316
314
  end
317
315
 
318
316
  it "should fail to test without 'user/repo' parameters" do
319
- github.user, github.repo = nil, nil
320
- expect { github.repos.test_hook }.to raise_error(ArgumentError)
317
+ expect { github.repos.hooks.test }.to raise_error(ArgumentError)
321
318
  end
322
319
 
323
320
  it "should fail to test resource without 'hook_id'" do
324
321
  expect {
325
- github.repos.test_hook user, repo
322
+ github.repos.hooks.test user, repo
326
323
  }.to raise_error(ArgumentError)
327
324
  end
328
325
 
329
326
  it "should trigger test for the resource" do
330
- github.repos.test_hook user, repo, hook_id
327
+ github.repos.hooks.test user, repo, hook_id
331
328
  a_post("/repos/#{user}/#{repo}/hooks/#{hook_id}/test").should have_been_made
332
329
  end
333
330
  end
@@ -335,15 +332,16 @@ describe Github::Repos::Hooks do
335
332
  context "failed to test resource" do
336
333
  before do
337
334
  stub_post("/repos/#{user}/#{repo}/hooks/#{hook_id}/test").
338
- to_return(:body => '', :status => 404, :headers => { :content_type => "application/json; charset=utf-8"})
335
+ to_return(:body => '', :status => 404,
336
+ :headers => { :content_type => "application/json; charset=utf-8"})
339
337
  end
340
338
 
341
339
  it "should fail to find resource" do
342
340
  expect {
343
- github.repos.test_hook user, repo, hook_id
341
+ github.repos.hooks.test user, repo, hook_id
344
342
  }.to raise_error(Github::Error::NotFound)
345
343
  end
346
344
  end
347
- end # test_hook
345
+ end # test
348
346
 
349
347
  end # Github::Repos::Hooks