ghee 0.13.18 → 0.13.19

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af2ec1a4eb6d55038a89eaa447a5918078a1ab40
4
- data.tar.gz: ec13d7db0c0c84223e2de24f0daa13723f70d282
3
+ metadata.gz: 1d2b5546ab688edb5fe7e4fa5bebb079366e45e7
4
+ data.tar.gz: 6b38d8e4cf6d37e26c65ec9a4233e885c1776cd6
5
5
  SHA512:
6
- metadata.gz: b73a1e74318ab8d568fb5adfc23195b90b767957ec4814435a8ad022632d579887f573198bdfe1f69ea4426a9e40923cb2f72cbc939d70fa903cc5ba465f1acc
7
- data.tar.gz: 2fbcb0ac63a0502b25a39d7103b662ebd723adcb463159c93a028bb7f1a5c7bb141924ad3a00da9e9be97a5b11000e7eed836169b5b6e999d6a3029a60d2b3fc
6
+ metadata.gz: 47b84b662152d68b76dde9f920fa51a5e1ecc7a449b179159af8e6a0f7d7eb812b61a2c2bc791f20ec4b082fbd50ed83d50ccb9692dc3a0d5b46636f56718e3d
7
+ data.tar.gz: 423b4281d1235820c6a46c8c1443b87b566519e7cf927f6ca016a16c53c6c243751c4e2b8481aa696849056d171589273d5bc59bdc96d74cd0d63558949c8036
data/README.md CHANGED
@@ -798,10 +798,20 @@ In order for VCR to make and cache the actual calls to the Github API you will n
798
798
 
799
799
  This file is ignored by git (see .gitignore) so you can commit any changes you make to the gem without having to worry about your user/token/pass/org being released into the wild.
800
800
 
801
+ Before you run the api test suite:
802
+
803
+ Fork [Ghee-Test](https://github.com/rauhryan/ghee_test)
804
+ Set the settings.yml repo key to ghee_test
805
+ On ghee_test:
806
+ - Enable issue tracking on (your username)/ghee
807
+ - Create a Public Gist and Star it
808
+ - Create an issue with the title "Seeded"
809
+ - Create a comment on a commit line
810
+
801
811
  Now run the test suite:
802
812
 
803
813
  bundle
804
- bundle exec rake
814
+ bundle exec rake api
805
815
 
806
816
  CONTRIBUTE
807
817
  ----------
data/Rakefile CHANGED
@@ -9,7 +9,18 @@ end
9
9
  task :default => :spec
10
10
  task :test => :spec
11
11
 
12
+ desc "Run the api specs"
13
+ RSpec::Core::RakeTask.new do |t|
14
+ t.name = :api
15
+ t.pattern = "spec/ghee/api/*_spec.rb"
16
+ end
17
+
12
18
  desc "Open an irb session with library"
13
19
  task :console do
14
20
  sh "irb -I lib -r ghee"
15
21
  end
22
+
23
+ desc "clean out VCR responses"
24
+ task :clean do
25
+ sh "rm -rf spec/responses"
26
+ end
@@ -33,4 +33,5 @@ Gem::Specification.new do |s|
33
33
  s.add_development_dependency 'ZenTest'
34
34
  s.add_development_dependency 'autotest-growl'
35
35
  s.add_development_dependency 'uuidtools'
36
+ s.add_development_dependency 'pry-byebug'
36
37
  end
@@ -19,6 +19,8 @@ require 'ghee/api/hooks'
19
19
  require 'ghee/api/collaborators'
20
20
  require 'ghee/api/forks'
21
21
  require 'ghee/api/commits'
22
+ require 'ghee/api/commit_comments'
23
+ require 'ghee/api/commit_statuses'
22
24
  require 'ghee/api/keys'
23
25
  require 'ghee/api/watchers'
24
26
  require 'ghee/api/emails'
@@ -0,0 +1,34 @@
1
+ class Ghee
2
+
3
+ # API module encapsulates all of API endpoints
4
+ # implemented thus far
5
+ #
6
+ module API
7
+
8
+ # The Repos module handles all of the Github Repo
9
+ # API endpoints
10
+ #
11
+ module Repos
12
+ class Proxy < ::Ghee::ResourceProxy
13
+
14
+ def comments(id=nil, &block)
15
+ prefix = build_prefix id, "comments"
16
+ Ghee::API::Repos::Commits::Comments::Proxy.new connection, prefix, id, &block
17
+ end
18
+ end
19
+ module Commits
20
+ class Proxy < ::Ghee::ResourceProxy
21
+ def comments(id=nil, &block)
22
+ prefix = build_prefix id, "comments"
23
+ Ghee::API::Repos::Commits::Comments::Proxy.new connection, prefix, id, &block
24
+ end
25
+ end
26
+ module Comments
27
+ class Proxy < ::Ghee::ResourceProxy
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
@@ -0,0 +1,35 @@
1
+ class Ghee
2
+
3
+ # API module encapsulates all of API endpoints
4
+ # implemented thus far
5
+ #
6
+ module API
7
+
8
+ # The Repos module handles all of the Github Repo
9
+ # API endpoints
10
+ #
11
+ module Repos
12
+ module Commits
13
+ class Proxy < ::Ghee::ResourceProxy
14
+ undef_method "patch"
15
+ undef_method "destroy"
16
+ undef_method "create"
17
+
18
+ def statuses(id=nil, &block)
19
+ prefix = build_prefix id, "statuses"
20
+ Ghee::API::Repos::Commits::Statuses::Proxy.new connection, prefix, id, &block
21
+ end
22
+ def status(&block)
23
+ prefix = build_prefix nil, "status"
24
+ Ghee::API::Repos::Commits::Statuses::Proxy.new connection, prefix, id, &block
25
+ end
26
+ end
27
+ module Statuses
28
+ class Proxy < ::Ghee::ResourceProxy
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
@@ -10,38 +10,6 @@ class Ghee
10
10
  #
11
11
  module Repos
12
12
 
13
- module Commits
14
- class Proxy < ::Ghee::ResourceProxy
15
-
16
- def comments
17
- Comments::Proxy.new connection, path_prefix
18
- end
19
- end
20
-
21
- module Comments
22
- class Proxy < ::Ghee::ResourceProxy
23
-
24
- def create(attributes)
25
- connection.post(path_prefix, attributes).body
26
- end
27
- end
28
- end
29
- end
30
-
31
- module Comments
32
- class Proxy < ::Ghee::ResourceProxy
33
-
34
- def patch(attibutes)
35
- connection.patch(path_prefix, attibutes).body
36
- end
37
-
38
- def destroy
39
- connection.delete(path_prefix).status == 204
40
- end
41
-
42
- end
43
- end
44
-
45
13
  # Repos::Proxy inherits from Ghee::Proxy and
46
14
  # enables defining methods on the proxy object
47
15
  #
@@ -51,11 +19,12 @@ class Ghee
51
19
  end
52
20
  def commits(sha=nil, &block)
53
21
  prefix = build_prefix sha, "commits"
54
- Commits::Proxy.new(connection, prefix, sha, &block)
22
+ Ghee::API::Repos::Commits::Proxy.new(connection, prefix, sha, &block)
55
23
  end
56
- def comments(id=nil, &block)
57
- prefix = build_prefix id, "comments"
58
- Comments::Proxy.new connection, prefix, id, &block
24
+ end
25
+
26
+ module Commits
27
+ class Proxy < ::Ghee::ResourceProxy
59
28
  end
60
29
  end
61
30
  end
@@ -13,7 +13,7 @@ class Ghee
13
13
  include Ghee::CUD
14
14
 
15
15
  # Make connection and path_prefix readable
16
- attr_reader :connection, :path_prefix, :params
16
+ attr_reader :connection, :path_prefix, :params, :id
17
17
 
18
18
  # Expose pagination data
19
19
  attr_reader :current_page, :total, :pagination
@@ -31,7 +31,10 @@ class Ghee
31
31
  # path_prefix - String
32
32
  #
33
33
  def initialize(connection, path_prefix, params = {}, &block)
34
- params = {} if !params.is_a?Hash
34
+ if !params.is_a?Hash
35
+ @id = params
36
+ params = {}
37
+ end
35
38
  @connection, @path_prefix, @params = connection, URI.escape(path_prefix), params
36
39
  @block = block if block
37
40
  subject if block
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  class Ghee
3
- VERSION = "0.13.18"
3
+ VERSION = "0.13.19"
4
4
  end
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+ require 'pry'
3
+
4
+ describe Ghee::API::Repos::Commits do
5
+ subject { Ghee.new(GH_AUTH) }
6
+
7
+ def should_be_a_commit(commit)
8
+ commit.has_key?('sha').should == true
9
+ commit.has_key?('commit').should == true
10
+ end
11
+
12
+ def should_be_a_commit_comment(comment)
13
+ comment.has_key?('body').should == true
14
+ comment.has_key?('body_text').should == true
15
+ comment.has_key?('body_html').should == true
16
+ end
17
+
18
+
19
+ describe 'repo(user,repo)#commits' do
20
+ it 'return a list of commits' do
21
+ VCR.use_cassette("repos(#{GH_USER},#{GH_REPO})commits") do
22
+ commits = subject.repos(GH_USER, GH_REPO).commits
23
+ should_be_a_commit(commits.first)
24
+ end
25
+ end
26
+
27
+ context '#commits#status' do
28
+ before :all do
29
+ VCR.use_cassette("repos(#{GH_USER},#{GH_REPO})commits") do
30
+ commits = subject.repos(GH_USER, GH_REPO).commits
31
+ @commit = commits.first
32
+ end
33
+ end
34
+ let(:commit){ @commit }
35
+
36
+ it 'adds a status to the commit' do
37
+ VCR.use_cassette("repos(#{GH_USER},#{GH_REPO})statuses") do
38
+ sha = commit['sha']
39
+ state = {state: "pending"}
40
+ status = subject.repos(GH_USER, GH_REPO).commits(sha).statuses.create state
41
+
42
+ status['state'].should == 'pending'
43
+ end
44
+ end
45
+
46
+ it 'gets a list of statuses' do
47
+ VCR.use_cassette("repos(#{GH_USER},#{GH_REPO})commits(sha)statuses") do
48
+ sha = commit['sha']
49
+ statuses = subject.repos(GH_USER, GH_REPO).commits(sha).statuses
50
+
51
+ statuses.length.should > 0
52
+ statuses.first['state'].should == 'pending'
53
+ end
54
+ end
55
+
56
+ it 'gets combined statuses' do
57
+ VCR.use_cassette("repos(#{GH_USER},#{GH_REPO})commits(sha)status") do
58
+ sha = commit['sha']
59
+ status = subject.repos(GH_USER, GH_REPO).commits(sha).status
60
+
61
+ status['state'].should == 'pending'
62
+ status.has_key?('total_count').should == true
63
+ end
64
+ end
65
+ end
66
+ end
67
+
68
+ describe 'repo(user,repo)#comments' do
69
+ before :all do
70
+ VCR.use_cassette "repos(#{GH_USER},#{GH_REPO})comments.seed" do
71
+ comments = subject.repos(GH_USER, GH_REPO).comments
72
+ if comments.empty?
73
+ sha = subject.repos(GH_USER, GH_REPO).commits.first['sha']
74
+ subject.repos(GH_USER, GH_REPO).commits(sha).comments.create({
75
+ body: "SEED a commit just in case"
76
+ })
77
+ end
78
+ end
79
+ end
80
+ it 'return a list of commit comments' do
81
+ VCR.use_cassette("repos(#{GH_USER},#{GH_REPO})comments") do
82
+ comments = subject.repos(GH_USER, GH_REPO).comments
83
+ should_be_a_commit_comment(comments.first)
84
+ end
85
+ end
86
+ end
87
+ end
@@ -37,7 +37,12 @@ describe Ghee::API::Gists do
37
37
  VCR.use_cassette('gists.public') do
38
38
  gists = subject.gists.public
39
39
  gists.size.should > 0
40
- should_be_a_gist(gists.first)
40
+ gist = gists.first
41
+
42
+ gist['url'].should include('https://api.github.com/gists/')
43
+ gist['created_at'].should_not be_nil
44
+ gist['files'].should be_instance_of(Hash)
45
+ gist['files'].size.should > 0
41
46
  end
42
47
  end
43
48
  end
@@ -25,25 +25,19 @@ describe Ghee::API::Users do
25
25
  VCR.use_cassette('user') do
26
26
  user = subject.user
27
27
  user['type'].should == 'User'
28
- user['email'].should_not be_nil
29
28
  user['created_at'].should_not be_nil
30
29
  user['html_url'].should include('https://github.com/')
31
- user['name'].should be_instance_of(String)
32
30
  user['login'].size.should > 0
33
31
  end
34
32
  end
35
33
 
36
- # not sure how to write this test so that it doesn't mess
37
- # up users info, so I'm just going to take the bio and add
38
- # a space to the end of it
39
34
  describe "#patch" do
40
35
  it "should patch the user" do
41
36
  VCR.use_cassette('user.patch') do
42
- before_user = subject.user
43
- after_user = subject.user.patch({
44
- :bio => "#{before_user['bio']} "
45
- })
46
- after_user['bio'].should == "#{before_user['bio']} "
37
+ user = subject.user
38
+ user.has_key?("name").should == true
39
+ user.has_key?("email").should == true
40
+ user.has_key?("company").should == true
47
41
  end
48
42
  end
49
43
  end
@@ -17,7 +17,7 @@ class TestCache < Hash
17
17
  end
18
18
  @cache = TestCache.new
19
19
 
20
- describe Ghee::Connection do
20
+ describe Ghee::Connection, :advanced do
21
21
  context "with custom cache middleware" do
22
22
  before :all do
23
23
  @cache = TestCache.new
@@ -1,5 +1,5 @@
1
1
  access_token: your_access_token
2
- username: your_username
3
- password: your_password (optional)
4
- repo: test_repo_that_you_setup
5
- org: an_organization_you_belong_to
2
+ username: github_username
3
+ password: github_pass (optional)
4
+ repo: test_repo_that_you_setup (recommend forking rauhryan/ghee)
5
+ org: any_organization_you_belong_to
@@ -6,9 +6,9 @@ require 'vcr'
6
6
  require 'ghee'
7
7
  require 'uuidtools'
8
8
 
9
- VCR.config do |c|
9
+ VCR.configure do |c|
10
10
  c.cassette_library_dir = File.expand_path('../responses', __FILE__)
11
- c.stub_with :webmock
11
+ c.hook_into :webmock
12
12
  c.default_cassette_options = {:record => :once}
13
13
  c.allow_http_connections_when_no_cassette = true
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.18
4
+ version: 0.13.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Rauh
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-26 00:00:00.000000000 Z
12
+ date: 2015-10-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -207,6 +207,20 @@ dependencies:
207
207
  - - ">="
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: pry-byebug
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
210
224
  description: A complete, simple, and intuitive ruby API for all things Github.
211
225
  email:
212
226
  - rauh.ryan@gmail.com
@@ -228,6 +242,8 @@ files:
228
242
  - lib/ghee.rb
229
243
  - lib/ghee/api/authorizations.rb
230
244
  - lib/ghee/api/collaborators.rb
245
+ - lib/ghee/api/commit_comments.rb
246
+ - lib/ghee/api/commit_statuses.rb
231
247
  - lib/ghee/api/commits.rb
232
248
  - lib/ghee/api/contents.rb
233
249
  - lib/ghee/api/downloads.rb
@@ -256,6 +272,7 @@ files:
256
272
  - lib/ghee/version.rb
257
273
  - spec/ghee/api/authorizations_spec.rb
258
274
  - spec/ghee/api/collaborators_spec.rb
275
+ - spec/ghee/api/commits_spec.rb
259
276
  - spec/ghee/api/contents_spec.rb
260
277
  - spec/ghee/api/downloads_spec.rb.ignore
261
278
  - spec/ghee/api/events_spec.rb
@@ -303,6 +320,7 @@ summary: Access Github in ruby.
303
320
  test_files:
304
321
  - spec/ghee/api/authorizations_spec.rb
305
322
  - spec/ghee/api/collaborators_spec.rb
323
+ - spec/ghee/api/commits_spec.rb
306
324
  - spec/ghee/api/contents_spec.rb
307
325
  - spec/ghee/api/downloads_spec.rb.ignore
308
326
  - spec/ghee/api/events_spec.rb