tinybucket 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -5
- data/README.md +100 -24
- data/lib/tinybucket.rb +1 -0
- data/lib/tinybucket/api.rb +1 -0
- data/lib/tinybucket/api/build_status_api.rb +55 -0
- data/lib/tinybucket/api/helper.rb +1 -0
- data/lib/tinybucket/api/helper/build_status_helper.rb +35 -0
- data/lib/tinybucket/client.rb +28 -45
- data/lib/tinybucket/enumerator.rb +4 -3
- data/lib/tinybucket/model.rb +2 -1
- data/lib/tinybucket/model/base.rb +1 -17
- data/lib/tinybucket/model/build_status.rb +55 -0
- data/lib/tinybucket/model/commit.rb +32 -15
- data/lib/tinybucket/model/concerns.rb +1 -0
- data/lib/tinybucket/model/concerns/api_callable.rb +19 -0
- data/lib/tinybucket/model/profile.rb +9 -26
- data/lib/tinybucket/model/pull_request.rb +18 -28
- data/lib/tinybucket/model/repository.rb +29 -76
- data/lib/tinybucket/model/team.rb +9 -34
- data/lib/tinybucket/parser.rb +1 -0
- data/lib/tinybucket/parser/build_status_parser.rb +9 -0
- data/lib/tinybucket/resource.rb +70 -0
- data/lib/tinybucket/resource/base.rb +29 -0
- data/lib/tinybucket/resource/branch_restrictions.rb +45 -0
- data/lib/tinybucket/resource/commit/base.rb +12 -0
- data/lib/tinybucket/resource/commit/build_statuses.rb +47 -0
- data/lib/tinybucket/resource/commit/comments.rb +32 -0
- data/lib/tinybucket/resource/commits.rb +33 -0
- data/lib/tinybucket/resource/forks.rb +22 -0
- data/lib/tinybucket/resource/pull_request/base.rb +18 -0
- data/lib/tinybucket/resource/pull_request/comments.rb +30 -0
- data/lib/tinybucket/resource/pull_request/commits.rb +17 -0
- data/lib/tinybucket/resource/pull_requests.rb +48 -0
- data/lib/tinybucket/resource/repos.rb +38 -0
- data/lib/tinybucket/resource/team/base.rb +22 -0
- data/lib/tinybucket/resource/team/followers.rb +13 -0
- data/lib/tinybucket/resource/team/following.rb +13 -0
- data/lib/tinybucket/resource/team/members.rb +13 -0
- data/lib/tinybucket/resource/team/repos.rb +13 -0
- data/lib/tinybucket/resource/user/base.rb +24 -0
- data/lib/tinybucket/resource/user/followers.rb +13 -0
- data/lib/tinybucket/resource/user/following.rb +13 -0
- data/lib/tinybucket/resource/user/repos.rb +13 -0
- data/lib/tinybucket/resource/watchers.rb +22 -0
- data/lib/tinybucket/version.rb +1 -1
- data/spec/fixtures/build_status.json +16 -0
- data/spec/fixtures/repositories/test_owner/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/commit/1/statuses/build/post.json +16 -0
- data/spec/fixtures/repositories/test_owner/test_repo/commit/1/statuses/build/test_status/get.json +16 -0
- data/spec/fixtures/repositories/test_owner/test_repo/commit/1/statuses/build/test_status/put.json +16 -0
- data/spec/fixtures/repositories/test_owner/test_repo/pullrequests/1/comments/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/pullrequests/1/commits/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/pullrequests/get.json +1 -1
- data/spec/fixtures/repositories/test_owner/test_repo/watchers/get.json +1 -1
- data/spec/lib/tinybucket/api/build_status_api_spec.rb +65 -0
- data/spec/lib/tinybucket/client_spec.rb +8 -4
- data/spec/lib/tinybucket/model/build_status_spec.rb +66 -0
- data/spec/lib/tinybucket/model/commit_spec.rb +19 -1
- data/spec/lib/tinybucket/model/profile_spec.rb +3 -3
- data/spec/lib/tinybucket/model/pull_request_spec.rb +3 -15
- data/spec/lib/tinybucket/model/repository_spec.rb +14 -20
- data/spec/lib/tinybucket/model/team_spec.rb +16 -4
- data/spec/lib/tinybucket/resource/branch_restrictions_spec.rb +60 -0
- data/spec/lib/tinybucket/resource/commit/build_statuses_spec.rb +50 -0
- data/spec/lib/tinybucket/resource/commit/comments_spec.rb +49 -0
- data/spec/lib/tinybucket/resource/commits_spec.rb +43 -0
- data/spec/lib/tinybucket/resource/forks_spec.rb +36 -0
- data/spec/lib/tinybucket/resource/pull_request/comments_spec.rb +41 -0
- data/spec/lib/tinybucket/resource/pull_request/commits_spec.rb +41 -0
- data/spec/lib/tinybucket/resource/pull_requests_spec.rb +59 -0
- data/spec/lib/tinybucket/resource/repos_spec.rb +76 -0
- data/spec/lib/tinybucket/resource/team/followers_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/team/following_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/team/members_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/team/repos_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/user/followers_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/user/following_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/user/repos_spec.rb +27 -0
- data/spec/lib/tinybucket/resource/watchers_spec.rb +38 -0
- data/spec/support/api_response_macros.rb +45 -1
- metadata +77 -3
@@ -16,12 +16,14 @@ RSpec.describe Tinybucket::Client do
|
|
16
16
|
|
17
17
|
context 'without options' do
|
18
18
|
subject { client.repos }
|
19
|
-
it { expect(subject).to be_instance_of(Tinybucket::
|
19
|
+
it { expect(subject).to be_instance_of(Tinybucket::Resource::Repos) }
|
20
|
+
it { expect(subject.instance_variable_get(:@owner)).to be_nil }
|
20
21
|
end
|
21
22
|
context 'with options' do
|
22
23
|
subject { client.repos(options) }
|
23
24
|
let(:options) { {} }
|
24
|
-
it { expect(subject).to be_instance_of(Tinybucket::
|
25
|
+
it { expect(subject).to be_instance_of(Tinybucket::Resource::Repos) }
|
26
|
+
it { expect(subject.instance_variable_get(:@owner)).to be_nil }
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
@@ -32,13 +34,15 @@ RSpec.describe Tinybucket::Client do
|
|
32
34
|
context 'without options' do
|
33
35
|
let(:request_path) { "/repositories/#{owner}" }
|
34
36
|
subject { client.repos(owner) }
|
35
|
-
it { expect(subject).to be_instance_of(Tinybucket::
|
37
|
+
it { expect(subject).to be_instance_of(Tinybucket::Resource::Repos) }
|
38
|
+
it { expect(subject.instance_variable_get(:@owner)).to eq(owner) }
|
36
39
|
end
|
37
40
|
context 'with options' do
|
38
41
|
let(:request_path) { "/repositories/#{owner}" }
|
39
42
|
subject { client.repos(owner, options) }
|
40
43
|
let(:options) { {} }
|
41
|
-
it { expect(subject).to be_instance_of(Tinybucket::
|
44
|
+
it { expect(subject).to be_instance_of(Tinybucket::Resource::Repos) }
|
45
|
+
it { expect(subject.instance_variable_get(:@owner)).to eq(owner) }
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Tinybucket::Model::BuildStatus do
|
4
|
+
include ApiResponseMacros
|
5
|
+
include ModelMacros
|
6
|
+
|
7
|
+
let(:model_json) { load_json_fixture('build_status') }
|
8
|
+
|
9
|
+
let(:request_method) { :get }
|
10
|
+
let(:request_path) { nil }
|
11
|
+
let(:stub_options) { nil }
|
12
|
+
|
13
|
+
let(:commit_hash) { '1' }
|
14
|
+
let(:owner) { 'test_owner' }
|
15
|
+
let(:slug) { 'test_repo' }
|
16
|
+
let(:model) do
|
17
|
+
Tinybucket::Model::BuildStatus.new(model_json).tap do |m|
|
18
|
+
m.repo_owner = owner
|
19
|
+
m.repo_slug = slug
|
20
|
+
m.revision = commit_hash
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
before do
|
25
|
+
if request_path
|
26
|
+
opts = stub_options.present? ? stub_options : {}
|
27
|
+
stub_apiresponse(request_method, request_path, opts)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it_behaves_like 'model has acceptable_attributes',
|
32
|
+
Tinybucket::Model::BuildStatus,
|
33
|
+
load_json_fixture('build_status')
|
34
|
+
|
35
|
+
describe 'model can reloadable' do
|
36
|
+
let(:build_status) do
|
37
|
+
Tinybucket::Model::BuildStatus.new({}).tap do |m|
|
38
|
+
m.repo_owner = owner
|
39
|
+
m.repo_slug = slug
|
40
|
+
m.revision = commit_hash
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
before { @model = build_status }
|
45
|
+
it_behaves_like 'the model is reloadable'
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#update' do
|
49
|
+
let(:status_key) { 'test_status' }
|
50
|
+
let(:request_path) do
|
51
|
+
"/repositories/#{owner}/#{slug}/commit/1/statuses/build/#{status_key}"
|
52
|
+
end
|
53
|
+
let(:params) do
|
54
|
+
{
|
55
|
+
state: 'SUCCESSFUL',
|
56
|
+
name: 'test_repo test #10',
|
57
|
+
url: 'https://example.com/path/to/build/info',
|
58
|
+
description: 'Changes by test_owner'
|
59
|
+
}
|
60
|
+
end
|
61
|
+
let(:request_method) { :put }
|
62
|
+
|
63
|
+
subject { model.update(params) }
|
64
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Model::BuildStatus) }
|
65
|
+
end
|
66
|
+
end
|
@@ -51,7 +51,9 @@ RSpec.describe Tinybucket::Model::Commit do
|
|
51
51
|
"/repositories/#{owner}/#{slug}/commit/1/comments"
|
52
52
|
end
|
53
53
|
subject { model.comments }
|
54
|
-
it
|
54
|
+
it 'return resource' do
|
55
|
+
expect(subject).to be_an_instance_of(Tinybucket::Resource::Commit::Comments)
|
56
|
+
end
|
55
57
|
end
|
56
58
|
|
57
59
|
describe '#comment' do
|
@@ -87,4 +89,20 @@ RSpec.describe Tinybucket::Model::Commit do
|
|
87
89
|
|
88
90
|
it { expect(subject).to be_truthy }
|
89
91
|
end
|
92
|
+
|
93
|
+
describe '#build_statuses' do
|
94
|
+
subject { model.build_statuses }
|
95
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::Commit::BuildStatuses) }
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '#build_status' do
|
99
|
+
let(:status_key) { 'test_status' }
|
100
|
+
let(:request_method) { :get }
|
101
|
+
let(:request_path) do
|
102
|
+
"/repositories/#{owner}/#{slug}/commit/1/statuses/build/#{status_key}"
|
103
|
+
end
|
104
|
+
|
105
|
+
subject { model.build_status(status_key) }
|
106
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Model::BuildStatus) }
|
107
|
+
end
|
90
108
|
end
|
@@ -35,18 +35,18 @@ RSpec.describe Tinybucket::Model::Profile do
|
|
35
35
|
describe 'followers' do
|
36
36
|
let(:request_path) { "/users/#{username}/followers" }
|
37
37
|
subject { model.followers() }
|
38
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
38
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::User::Followers) }
|
39
39
|
end
|
40
40
|
|
41
41
|
describe 'following' do
|
42
42
|
let(:request_path) { "/users/#{username}/following" }
|
43
43
|
subject { model.following }
|
44
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
44
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::User::Following) }
|
45
45
|
end
|
46
46
|
|
47
47
|
describe 'repos' do
|
48
48
|
let(:request_path) { "/repositories/#{username}" }
|
49
49
|
subject { model.repos }
|
50
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
50
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::User::Repos) }
|
51
51
|
end
|
52
52
|
end
|
@@ -94,7 +94,7 @@ RSpec.describe Tinybucket::Model::PullRequest do
|
|
94
94
|
|
95
95
|
subject { model.commits() }
|
96
96
|
|
97
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
97
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::PullRequest::Commits) }
|
98
98
|
end
|
99
99
|
|
100
100
|
describe 'comments' do
|
@@ -103,19 +103,7 @@ RSpec.describe Tinybucket::Model::PullRequest do
|
|
103
103
|
end
|
104
104
|
|
105
105
|
subject { model.comments }
|
106
|
-
|
107
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::Enumerator) }
|
108
|
-
it 'return comments which associate with this pull request' do
|
109
|
-
# extract iterator from enumerator.
|
110
|
-
iterator = subject.instance_variable_get(:@iterator)
|
111
|
-
# extract values from iterator.
|
112
|
-
values = iterator.instance_variable_get(:@values)
|
113
|
-
|
114
|
-
values.each do |comment|
|
115
|
-
expect(comment).to be_an_instance_of(Tinybucket::Model::Comment)
|
116
|
-
expect(comment.commented_to).to eq(model)
|
117
|
-
end
|
118
|
-
end
|
106
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::PullRequest::Comments) }
|
119
107
|
end
|
120
108
|
|
121
109
|
describe 'comment' do
|
@@ -138,8 +126,8 @@ RSpec.describe Tinybucket::Model::PullRequest do
|
|
138
126
|
"/repositories/#{owner}/#{slug}/pullrequests/1/diff"
|
139
127
|
end
|
140
128
|
it { expect(subject).to be_instance_of(String) }
|
141
|
-
|
142
129
|
end
|
130
|
+
|
143
131
|
describe 'merge' do
|
144
132
|
let(:request_method) { :post }
|
145
133
|
let(:request_path) do
|
@@ -52,47 +52,38 @@ RSpec.describe Tinybucket::Model::Repository do
|
|
52
52
|
|
53
53
|
subject { model.pull_requests() }
|
54
54
|
|
55
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
55
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::PullRequests) }
|
56
56
|
end
|
57
57
|
|
58
58
|
describe '#pull_request' do
|
59
59
|
let(:prid) { 1 }
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
"/repositories/#{owner}/#{slug}/pullrequests/#{prid}"
|
65
|
-
end
|
66
|
-
it 'return the specific pull_request model' do
|
67
|
-
expect(subject).to be_an_instance_of(Tinybucket::Model::PullRequest)
|
68
|
-
expect(subject.id).to eq(prid)
|
69
|
-
end
|
61
|
+
subject { model.pull_request(prid) }
|
62
|
+
let(:request_path) do
|
63
|
+
"/repositories/#{owner}/#{slug}/pullrequests/#{prid}"
|
70
64
|
end
|
71
|
-
|
72
|
-
subject
|
73
|
-
|
74
|
-
expect(subject).to be_an_instance_of(Tinybucket::Model::PullRequest)
|
75
|
-
expect(subject.id).to be_nil
|
76
|
-
end
|
65
|
+
it 'return the specific pull_request model' do
|
66
|
+
expect(subject).to be_an_instance_of(Tinybucket::Model::PullRequest)
|
67
|
+
expect(subject.id).to eq(prid)
|
77
68
|
end
|
78
69
|
end
|
79
70
|
|
80
71
|
describe '#watchers' do
|
81
72
|
let(:request_path) { "/repositories/#{owner}/#{slug}/watchers" }
|
82
73
|
subject { model.watchers }
|
83
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
74
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::Watchers) }
|
84
75
|
end
|
85
76
|
|
86
77
|
describe '#forks' do
|
87
78
|
let(:request_path) { "/repositories/#{owner}/#{slug}/forks" }
|
88
79
|
subject { model.forks }
|
89
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
80
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::Forks) }
|
90
81
|
end
|
91
82
|
|
92
83
|
describe '#commits' do
|
93
84
|
let(:request_path) { "/repositories/#{owner}/#{slug}/commits" }
|
94
85
|
subject { model.commits }
|
95
|
-
it { expect(subject).to be_an_instance_of(Tinybucket::
|
86
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Resource::Commits) }
|
96
87
|
end
|
97
88
|
|
98
89
|
describe '#commit' do
|
@@ -105,7 +96,10 @@ RSpec.describe Tinybucket::Model::Repository do
|
|
105
96
|
describe '#branch_restrictions' do
|
106
97
|
let(:request_path) { "/repositories/#{owner}/#{slug}/branch-restrictions" }
|
107
98
|
subject { model.branch_restrictions }
|
108
|
-
it
|
99
|
+
it 'return resource model' do
|
100
|
+
expect(subject).to be_an_instance_of(
|
101
|
+
Tinybucket::Resource::BranchRestrictions)
|
102
|
+
end
|
109
103
|
end
|
110
104
|
|
111
105
|
describe '#branch_restriction' do
|
@@ -35,24 +35,36 @@ RSpec.describe Tinybucket::Model::Team do
|
|
35
35
|
describe '#members' do
|
36
36
|
let(:request_path) { "/teams/#{teamname}/members" }
|
37
37
|
subject { model.members }
|
38
|
-
it
|
38
|
+
it 'return resource' do
|
39
|
+
expect(subject).to be_an_instance_of(
|
40
|
+
Tinybucket::Resource::Team::Members)
|
41
|
+
end
|
39
42
|
end
|
40
43
|
|
41
44
|
describe '#followers' do
|
42
45
|
let(:request_path) { "/teams/#{teamname}/followers" }
|
43
46
|
subject { model.followers() }
|
44
|
-
it
|
47
|
+
it 'return resource' do
|
48
|
+
expect(subject).to be_an_instance_of(
|
49
|
+
Tinybucket::Resource::Team::Followers)
|
50
|
+
end
|
45
51
|
end
|
46
52
|
|
47
53
|
describe '#following' do
|
48
54
|
let(:request_path) { "/teams/#{teamname}/following" }
|
49
55
|
subject { model.following }
|
50
|
-
it
|
56
|
+
it 'return resource' do
|
57
|
+
expect(subject).to be_an_instance_of(
|
58
|
+
Tinybucket::Resource::Team::Following)
|
59
|
+
end
|
51
60
|
end
|
52
61
|
|
53
62
|
describe '#repos' do
|
54
63
|
let(:request_path) { "/teams/#{teamname}/repositories" }
|
55
64
|
subject { model.repos }
|
56
|
-
it
|
65
|
+
it 'return resource' do
|
66
|
+
expect(subject).to be_an_instance_of(
|
67
|
+
Tinybucket::Resource::Team::Repos)
|
68
|
+
end
|
57
69
|
end
|
58
70
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Tinybucket::Resource::BranchRestrictions do
|
4
|
+
include ApiResponseMacros
|
5
|
+
|
6
|
+
let(:owner) { 'test_owner' }
|
7
|
+
let(:slug) { 'test_repo' }
|
8
|
+
let(:repo) do
|
9
|
+
Tinybucket::Model::Repository.new({}).tap do |m|
|
10
|
+
m.repo_owner = owner
|
11
|
+
m.repo_slug = slug
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:options) { {} }
|
16
|
+
let(:resource) { Tinybucket::Resource::BranchRestrictions.new(repo, options) }
|
17
|
+
|
18
|
+
describe 'constructor' do
|
19
|
+
subject { resource }
|
20
|
+
it 'create new instance' do
|
21
|
+
expect(subject).to be_an_instance_of(
|
22
|
+
Tinybucket::Resource::BranchRestrictions)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#create' do
|
27
|
+
subject { resource.create({}) }
|
28
|
+
it { expect { subject.create }.to raise_error(NotImplementedError) }
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#find' do
|
32
|
+
let(:restriction_id) { '1' }
|
33
|
+
let(:request_path) do
|
34
|
+
"/repositories/#{owner}/#{slug}/branch-restrictions/#{restriction_id}"
|
35
|
+
end
|
36
|
+
subject { resource.find(restriction_id, {}) }
|
37
|
+
before { stub_apiresponse(:get, request_path, {}) }
|
38
|
+
it 'return model' do
|
39
|
+
expect(subject).to be_an_instance_of(Tinybucket::Model::BranchRestriction)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'Enumerable Methods' do
|
44
|
+
let(:request_path) { "/repositories/#{owner}/#{slug}/branch-restrictions" }
|
45
|
+
before { stub_enum_response(:get, request_path) }
|
46
|
+
|
47
|
+
describe '#take(1)' do
|
48
|
+
subject { resource.take(1) }
|
49
|
+
it { expect(subject).to be_an_instance_of(Array) }
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#each' do
|
53
|
+
it 'iterate models' do
|
54
|
+
resource.each do |m|
|
55
|
+
expect(m).to be_an_instance_of(Tinybucket::Model::BranchRestriction)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Tinybucket::Resource::Commit::BuildStatuses do
|
4
|
+
include ApiResponseMacros
|
5
|
+
|
6
|
+
let(:owner) { 'test_owner' }
|
7
|
+
let(:slug) { 'test_repo' }
|
8
|
+
let(:revision) { '1' }
|
9
|
+
let(:commit) do
|
10
|
+
Tinybucket::Model::Commit.new({}).tap do |m|
|
11
|
+
m.hash = revision
|
12
|
+
m.repo_owner = owner
|
13
|
+
m.repo_slug = slug
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:options) { {} }
|
18
|
+
let(:resource) do
|
19
|
+
Tinybucket::Resource::Commit::BuildStatuses.new(commit, options)
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:status_key) { 'test_status' }
|
23
|
+
|
24
|
+
describe '#find' do
|
25
|
+
let(:request_path) do
|
26
|
+
"/repositories/#{owner}/#{slug}/commit/#{revision}/statuses/build/#{status_key}"
|
27
|
+
end
|
28
|
+
subject { resource.find(status_key) }
|
29
|
+
before { stub_apiresponse(:get, request_path) }
|
30
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Model::BuildStatus) }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#create' do
|
34
|
+
let(:request_path) do
|
35
|
+
"/repositories/#{owner}/#{slug}/commit/#{revision}/statuses/build"
|
36
|
+
end
|
37
|
+
let(:params) do
|
38
|
+
{
|
39
|
+
state: 'INPROGRESS',
|
40
|
+
name: 'test_repo test #10',
|
41
|
+
url: 'https://example.com/path/to/build/info',
|
42
|
+
description: 'Changes by test_owner'
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
before { stub_apiresponse(:post, request_path) }
|
47
|
+
subject { resource.create(status_key, params) }
|
48
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Model::BuildStatus) }
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Tinybucket::Resource::Commit::Comments do
|
4
|
+
include ApiResponseMacros
|
5
|
+
|
6
|
+
let(:owner) { 'test_owner' }
|
7
|
+
let(:slug) { 'test_repo' }
|
8
|
+
let(:revision) { '1' }
|
9
|
+
let(:commit) do
|
10
|
+
Tinybucket::Model::Commit.new({}).tap do |m|
|
11
|
+
m.hash = revision
|
12
|
+
m.repo_owner = owner
|
13
|
+
m.repo_slug = slug
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:options) { {} }
|
18
|
+
let(:resource) { Tinybucket::Resource::Commit::Comments.new(commit, options) }
|
19
|
+
|
20
|
+
describe '#find' do
|
21
|
+
let(:comment_id) { '1' }
|
22
|
+
let(:request_path) do
|
23
|
+
"/repositories/#{owner}/#{slug}/commit/#{revision}/comments/#{comment_id}"
|
24
|
+
end
|
25
|
+
subject { resource.find(comment_id) }
|
26
|
+
before { stub_apiresponse(:get, request_path) }
|
27
|
+
it { expect(subject).to be_an_instance_of(Tinybucket::Model::Comment) }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'Enumerable Methods' do
|
31
|
+
let(:request_path) do
|
32
|
+
"/repositories/#{owner}/#{slug}/commit/#{revision}/comments"
|
33
|
+
end
|
34
|
+
before { stub_enum_response(:get, request_path) }
|
35
|
+
|
36
|
+
describe '#take(1)' do
|
37
|
+
subject { resource.take(1) }
|
38
|
+
it { expect(subject).to be_an_instance_of(Array) }
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#each' do
|
42
|
+
it 'iterate models' do
|
43
|
+
resource.each do |m|
|
44
|
+
expect(m).to be_an_instance_of(Tinybucket::Model::Comment)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|