github_api 0.7.2 → 0.8.0

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 (74) hide show
  1. data/README.md +6 -5
  2. data/features/{events.feature → activity/events.feature} +8 -8
  3. data/features/{repos → activity}/starring.feature +6 -6
  4. data/features/{repos → activity}/watching.feature +6 -6
  5. data/features/cassettes/{events → activity/events}/issue.yml +0 -0
  6. data/features/cassettes/{events → activity/events}/network.yml +0 -0
  7. data/features/cassettes/{events → activity/events}/org.yml +0 -0
  8. data/features/cassettes/{events → activity/events}/performed.yml +0 -0
  9. data/features/cassettes/{events → activity/events}/public.yml +0 -0
  10. data/features/cassettes/{events → activity/events}/received.yml +0 -0
  11. data/features/cassettes/{events → activity/events}/repo.yml +0 -0
  12. data/features/cassettes/{events → activity/events}/user_org.yml +0 -0
  13. data/features/cassettes/{repos → activity}/starring/list.yml +0 -0
  14. data/features/cassettes/{repos → activity}/starring/star.yml +0 -0
  15. data/features/cassettes/{repos → activity}/starring/starred.yml +0 -0
  16. data/features/cassettes/{repos → activity}/starring/starring.yml +0 -0
  17. data/features/cassettes/{repos → activity}/starring/unstar.yml +0 -0
  18. data/features/cassettes/{repos → activity}/watching/list.yml +0 -0
  19. data/features/cassettes/{repos → activity}/watching/unwatch.yml +0 -0
  20. data/features/cassettes/{repos → activity}/watching/watch.yml +0 -0
  21. data/features/cassettes/{repos → activity}/watching/watched.yml +0 -0
  22. data/features/cassettes/{repos → activity}/watching/watching.yml +0 -0
  23. data/features/github_api.feature +3 -3
  24. data/lib/github_api.rb +1 -1
  25. data/lib/github_api/activity.rb +39 -0
  26. data/lib/github_api/{events.rb → activity/events.rb} +5 -5
  27. data/lib/github_api/activity/notifications.rb +162 -0
  28. data/lib/github_api/{repos → activity}/starring.rb +9 -9
  29. data/lib/github_api/{repos → activity}/watching.rb +9 -9
  30. data/lib/github_api/client.rb +6 -4
  31. data/lib/github_api/repos.rb +2 -14
  32. data/lib/github_api/response.rb +0 -1
  33. data/lib/github_api/version.rb +2 -2
  34. data/spec/fixtures/activity/notifications.json +32 -0
  35. data/spec/fixtures/activity/subscribed.json +8 -0
  36. data/spec/fixtures/activity/threads.json +32 -0
  37. data/spec/github/activity/activity_spec.rb +16 -0
  38. data/spec/github/activity/events/issue_spec.rb +63 -0
  39. data/spec/github/activity/events/network_spec.rb +61 -0
  40. data/spec/github/activity/events/org_spec.rb +60 -0
  41. data/spec/github/activity/events/performed_spec.rb +91 -0
  42. data/spec/github/activity/events/public_spec.rb +55 -0
  43. data/spec/github/activity/events/received_spec.rb +91 -0
  44. data/spec/github/activity/events/repository_spec.rb +65 -0
  45. data/spec/github/activity/events/user_org_spec.rb +63 -0
  46. data/spec/github/activity/notifications/create_spec.rb +44 -0
  47. data/spec/github/activity/notifications/delete_spec.rb +41 -0
  48. data/spec/github/activity/notifications/get_spec.rb +58 -0
  49. data/spec/github/activity/notifications/list_spec.rb +82 -0
  50. data/spec/github/activity/notifications/mark_spec.rb +74 -0
  51. data/spec/github/activity/notifications/subscribed_spec.rb +48 -0
  52. data/spec/github/activity/starring/list_spec.rb +64 -0
  53. data/spec/github/activity/starring/star_spec.rb +36 -0
  54. data/spec/github/activity/starring/starred_spec.rb +53 -0
  55. data/spec/github/activity/starring/starring_spec.rb +38 -0
  56. data/spec/github/activity/starring/unstar_spec.rb +37 -0
  57. data/spec/github/activity/watching/list_spec.rb +59 -0
  58. data/spec/github/activity/watching/unwatch_spec.rb +37 -0
  59. data/spec/github/activity/watching/watch_spec.rb +37 -0
  60. data/spec/github/activity/watching/watched_spec.rb +53 -0
  61. data/spec/github/activity/watching/watching_spec.rb +41 -0
  62. data/spec/github/authorization_spec.rb +2 -2
  63. data/spec/github/issues_spec.rb +1 -1
  64. data/spec/github/repos/comments/delete_spec.rb +2 -0
  65. data/spec/github/repos/delete_spec.rb +1 -1
  66. data/spec/github/repos/get_spec.rb +2 -2
  67. data/spec/github/repos/starring_spec.rb +0 -199
  68. data/spec/github/repos_spec.rb +0 -4
  69. data/spec/github/result_spec.rb +1 -1
  70. metadata +88 -62
  71. data/features/cassettes/git_data/tags/get.yml +0 -54
  72. data/features/git_data/tags.feature +0 -17
  73. data/spec/github/events_spec.rb +0 -491
  74. data/spec/github/repos/watching_spec.rb +0 -203
@@ -0,0 +1,91 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Activity::Events, '#performed' do
6
+ let(:user) { 'peter-murach' }
7
+ let(:request_path) { "/users/#{user}/events" }
8
+ let(:body) { fixture('events/events.json') }
9
+ let(:status) { 200 }
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
+
20
+ it "should fail to get resource without username" do
21
+ expect { subject.performed nil }.to raise_error(ArgumentError)
22
+ end
23
+
24
+ it "should get the resources" do
25
+ subject.performed user
26
+ a_get(request_path).should have_been_made
27
+ end
28
+
29
+ it "should return array of resources" do
30
+ events = subject.performed user
31
+ events.should be_an Array
32
+ events.should have(1).items
33
+ end
34
+
35
+ it "should be a mash type" do
36
+ events = subject.performed user
37
+ events.first.should be_a Hashie::Mash
38
+ end
39
+
40
+ it "should get event information" do
41
+ events = subject.performed user
42
+ events.first.type.should == 'Event'
43
+ end
44
+
45
+ it "should yield to a block" do
46
+ subject.should_receive(:performed).with(user).and_yield('web')
47
+ subject.performed(user) { |param| 'web' }
48
+ end
49
+ end
50
+
51
+ context "all public resources found" do
52
+ let(:request_path) { "/users/#{user}/events/public" }
53
+
54
+ it "should get the resources" do
55
+ subject.performed user, :public => true
56
+ a_get(request_path).should have_been_made
57
+ end
58
+
59
+ it "should return array of resources" do
60
+ events = subject.performed user, :public => true
61
+ events.should be_an Array
62
+ events.should have(1).items
63
+ end
64
+
65
+ it "should be a mash type" do
66
+ events = subject.performed user, :public => true
67
+ events.first.should be_a Hashie::Mash
68
+ end
69
+
70
+ it "should get event information" do
71
+ events = subject.performed user, :public => true
72
+ events.first.type.should == 'Event'
73
+ end
74
+
75
+ it "should yield to a block" do
76
+ subject.should_receive(:performed).with(user).and_yield('web')
77
+ subject.performed(user) { |param| 'web' }
78
+ end
79
+ end
80
+
81
+ context "resource not found" do
82
+ let(:body) { '' }
83
+ let(:status) { [404, "Not Found"] }
84
+
85
+ it "should return 404 with a message 'Not Found'" do
86
+ expect {
87
+ subject.performed user
88
+ }.to raise_error(Github::Error::NotFound)
89
+ end
90
+ end
91
+ end # performed
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Activity::Events, '#public' do
6
+ let(:request_path) { "/events" }
7
+ let(:body) { fixture('events/events.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 get the resources" do
20
+ subject.public
21
+ a_get(request_path).should have_been_made
22
+ end
23
+
24
+ it "should return array of resources" do
25
+ events = subject.public
26
+ events.should be_an Array
27
+ events.should have(1).items
28
+ end
29
+
30
+ it "should be a mash type" do
31
+ events = subject.public
32
+ events.first.should be_a Hashie::Mash
33
+ end
34
+
35
+ it "should get event information" do
36
+ events = subject.public
37
+ events.first.type.should == 'Event'
38
+ end
39
+
40
+ it "should yield to a block" do
41
+ subject.should_receive(:public).and_yield('web')
42
+ subject.public { |param| 'web' }
43
+ end
44
+ end
45
+
46
+ context "resource not found" do
47
+ let(:body) { '' }
48
+ let(:status) { [404, "Not Found"] }
49
+
50
+ it "should return 404 with a message 'Not Found'" do
51
+ expect { subject.public }.to raise_error(Github::Error::NotFound)
52
+ end
53
+ end
54
+
55
+ end # public
@@ -0,0 +1,91 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Activity::Events, '#received' do
6
+ let(:user) { 'peter-murach' }
7
+ let(:request_path) { "/users/#{user}/received_events" }
8
+ let(:body) { fixture('events/events.json') }
9
+ let(:status) { 200 }
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
+
20
+ it "should fail to get resource without username" do
21
+ expect { subject.received nil }.to raise_error(ArgumentError)
22
+ end
23
+
24
+ it "should get the resources" do
25
+ subject.received user
26
+ a_get(request_path).should have_been_made
27
+ end
28
+
29
+ it "should return array of resources" do
30
+ events = subject.received user
31
+ events.should be_an Array
32
+ events.should have(1).items
33
+ end
34
+
35
+ it "should be a mash type" do
36
+ events = subject.received user
37
+ events.first.should be_a Hashie::Mash
38
+ end
39
+
40
+ it "should get event information" do
41
+ events = subject.received user
42
+ events.first.type.should == 'Event'
43
+ end
44
+
45
+ it "should yield to a block" do
46
+ subject.should_receive(:received).with(user).and_yield('web')
47
+ subject.received(user) { |param| 'web' }
48
+ end
49
+ end
50
+
51
+ context "all public resources found" do
52
+ let(:request_path) { "/users/#{user}/received_events/public" }
53
+
54
+ it "should get the resources" do
55
+ subject.received user, :public => true
56
+ a_get(request_path).should have_been_made
57
+ end
58
+
59
+ it "should return array of resources" do
60
+ events = subject.received user, :public => true
61
+ events.should be_an Array
62
+ events.should have(1).items
63
+ end
64
+
65
+ it "should be a mash type" do
66
+ events = subject.received user, :public => true
67
+ events.first.should be_a Hashie::Mash
68
+ end
69
+
70
+ it "should get event information" do
71
+ events = subject.received user, :public => true
72
+ events.first.type.should == 'Event'
73
+ end
74
+
75
+ it "should yield to a block" do
76
+ subject.should_receive(:received).with(user).and_yield('web')
77
+ subject.received(user) { |param| 'web' }
78
+ end
79
+ end
80
+
81
+ context "resource not found" do
82
+ let(:body) { '' }
83
+ let(:status) { [404, "Not Found"] }
84
+
85
+ it "should return 404 with a message 'Not Found'" do
86
+ expect {
87
+ subject.received user
88
+ }.to raise_error(Github::Error::NotFound)
89
+ end
90
+ end
91
+ end # received
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Activity::Events, '#repository' do
6
+ let(:user) { 'peter-murach' }
7
+ let(:repo) { 'github' }
8
+ let(:request_path) { "/repos/#{user}/#{repo}/events" }
9
+ let(:body) { fixture('events/events.json') }
10
+ let(:status) { 200 }
11
+
12
+ before {
13
+ stub_get(request_path).to_return(:body => body, :status => status,
14
+ :headers => {:content_type => "application/json; charset=utf-8"})
15
+ }
16
+
17
+ after { reset_authentication_for subject }
18
+
19
+ context "resource found" do
20
+ it { should respond_to :repo }
21
+
22
+ it { should respond_to :repo_events }
23
+
24
+ it "should fail to get resource without username" do
25
+ expect { subject.repository nil, repo }.to raise_error(ArgumentError)
26
+ end
27
+
28
+ it "should get the resources" do
29
+ subject.repository user, repo
30
+ a_get(request_path).should have_been_made
31
+ end
32
+
33
+ it "should return array of resources" do
34
+ events = subject.repository user, repo
35
+ events.should be_an Array
36
+ events.should have(1).items
37
+ end
38
+
39
+ it "should be a mash type" do
40
+ events = subject.repository user, repo
41
+ events.first.should be_a Hashie::Mash
42
+ end
43
+
44
+ it "should get event information" do
45
+ events = subject.repository user, repo
46
+ events.first.type.should == 'Event'
47
+ end
48
+
49
+ it "should yield to a block" do
50
+ subject.should_receive(:repository).with(user, repo).and_yield('web')
51
+ subject.repository(user, repo) { |param| 'web' }
52
+ end
53
+ end
54
+
55
+ context "resource not found" do
56
+ let(:body) { '' }
57
+ let(:status) { [404, "Not Found"] }
58
+
59
+ it "should return 404 with a message 'Not Found'" do
60
+ expect {
61
+ subject.repository user, repo
62
+ }.to raise_error(Github::Error::NotFound)
63
+ end
64
+ end
65
+ end # repository
@@ -0,0 +1,63 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Activity::Events, '#user_org' do
6
+ let(:user) { 'peter-murach' }
7
+ let(:org) { 'github' }
8
+ let(:request_path) { "/users/#{user}/events/orgs/#{org}" }
9
+ let(:body) { fixture('events/events.json') }
10
+ let(:status) { 200 }
11
+
12
+ before {
13
+ stub_get(request_path).to_return(:body => body, :status => status,
14
+ :headers => {:content_type => "application/json; charset=utf-8"})
15
+ }
16
+
17
+ after { reset_authentication_for subject }
18
+
19
+ context "resource found" do
20
+ it { should respond_to :user_organization }
21
+
22
+ it "should fail to get resource without orgname" do
23
+ expect { subject.user_org user, nil }.to raise_error(ArgumentError)
24
+ end
25
+
26
+ it "should get the resources" do
27
+ subject.user_org user, org
28
+ a_get(request_path).should have_been_made
29
+ end
30
+
31
+ it "should return array of resources" do
32
+ events = subject.user_org user, org
33
+ events.should be_an Array
34
+ events.should have(1).items
35
+ end
36
+
37
+ it "should be a mash type" do
38
+ events = subject.user_org user, org
39
+ events.first.should be_a Hashie::Mash
40
+ end
41
+
42
+ it "should get event information" do
43
+ events = subject.user_org user, org
44
+ events.first.type.should == 'Event'
45
+ end
46
+
47
+ it "should yield to a block" do
48
+ subject.should_receive(:user_org).with(user, org).and_yield('web')
49
+ subject.user_org(user, org) { |param| 'web' }
50
+ end
51
+ end
52
+
53
+ context "resource not found" do
54
+ let(:body) { '' }
55
+ let(:status) { [404, "Not Found"] }
56
+
57
+ it "should return 404 with a message 'Not Found'" do
58
+ expect {
59
+ subject.user_org user, org
60
+ }.to raise_error(Github::Error::NotFound)
61
+ end
62
+ end
63
+ end # user_org
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Activity::Notifications, '#create' do
6
+ let(:thread_id) { 1 }
7
+ let(:request_path) { "/notifications/threads/#{thread_id}/subscription" }
8
+
9
+ let(:inputs) {{
10
+ :subscribed => true,
11
+ :ignored => false
12
+ }}
13
+
14
+ before {
15
+ subject.oauth_token = OAUTH_TOKEN
16
+ stub_put(request_path).
17
+ with(:body => inputs, :query => {:access_token => OAUTH_TOKEN}).
18
+ to_return(:body => body, :status => status,
19
+ :headers => {:content_type => "application/json; charset=utf-8"} )
20
+ }
21
+
22
+ after { reset_authentication_for subject }
23
+
24
+ context "resource created successfully" do
25
+ let(:body) { fixture('activity/subscribed.json') }
26
+ let(:status) { 200 }
27
+
28
+ it 'asserts thread id presence' do
29
+ expect { subject.create nil }.to raise_error(ArgumentError)
30
+ end
31
+
32
+ it 'should create resource' do
33
+ subject.create thread_id, inputs
34
+ a_put(request_path).
35
+ with(:body => inputs, :query => {:access_token => OAUTH_TOKEN}).
36
+ should have_been_made
37
+ end
38
+
39
+ it 'should return the resource' do
40
+ thread = subject.create thread_id, inputs
41
+ thread.subscribed.should be_true
42
+ end
43
+ end
44
+ end # create
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Github::Activity::Notifications, '#delete' do
6
+ let(:thread_id) { 1 }
7
+ let(:request_path) { "/notifications/threads/#{thread_id}/subscription" }
8
+ let(:body) { '' }
9
+ let(:status) { 204 }
10
+
11
+ before {
12
+ subject.oauth_token = OAUTH_TOKEN
13
+ stub_delete(request_path).with(:query => {:access_token => OAUTH_TOKEN}).
14
+ to_return(:body => body, :status => status,
15
+ :headers => { :content_type => "application/json; charset=utf-8"})
16
+ }
17
+
18
+ after { reset_authentication_for subject }
19
+
20
+ it { should respond_to :remove }
21
+
22
+ it "should delete the resource successfully" do
23
+ subject.delete thread_id
24
+ a_delete(request_path).with(:query => {:access_token => OAUTH_TOKEN}).
25
+ should have_been_made
26
+ end
27
+
28
+ it "should fail to delete resource without 'user' parameter" do
29
+ expect { subject.delete nil }.to raise_error(ArgumentError)
30
+ end
31
+
32
+ context 'failed to delete' do
33
+ let(:status) { 404 }
34
+
35
+ it "should fail to delete resource that is not found" do
36
+ expect {
37
+ subject.delete thread_id
38
+ }.to raise_error(Github::Error::NotFound)
39
+ end
40
+ end
41
+ end # delete