Commit c7e00aca2d68a15c901506f1af4242df92670b6a
1 parent
10ee137e
Exists in
spb-stable
and in
2 other branches
Better specs for Compare API
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
2 changed files
with
28 additions
and
10 deletions
Show diff stats
lib/api/entities.rb
@@ -202,7 +202,9 @@ module API | @@ -202,7 +202,9 @@ module API | ||
202 | 202 | ||
203 | class Compare < Grape::Entity | 203 | class Compare < Grape::Entity |
204 | expose :commit, using: Entities::RepoCommit do |compare, options| | 204 | expose :commit, using: Entities::RepoCommit do |compare, options| |
205 | - Commit.new compare.commit | 205 | + if compare.commit |
206 | + Commit.new compare.commit | ||
207 | + end | ||
206 | end | 208 | end |
207 | expose :commits, using: Entities::RepoCommit do |compare, options| | 209 | expose :commits, using: Entities::RepoCommit do |compare, options| |
208 | Commit.decorate compare.commits | 210 | Commit.decorate compare.commits |
spec/requests/api/repositories_spec.rb
@@ -114,25 +114,41 @@ describe API::API, api: true do | @@ -114,25 +114,41 @@ describe API::API, api: true do | ||
114 | end | 114 | end |
115 | 115 | ||
116 | describe 'GET /GET /projects/:id/repository/compare' do | 116 | describe 'GET /GET /projects/:id/repository/compare' do |
117 | - it "should compare 2 branches" do | 117 | + it "should compare branches" do |
118 | get api("/projects/#{project.id}/repository/compare", user), from: 'master', to: 'simple_merge_request' | 118 | get api("/projects/#{project.id}/repository/compare", user), from: 'master', to: 'simple_merge_request' |
119 | response.status.should == 200 | 119 | response.status.should == 200 |
120 | - json_response['commits'].size.should == 3 | ||
121 | - json_response['diffs'].size.should == 1 | 120 | + json_response['commits'].should be_present |
121 | + json_response['diffs'].should be_present | ||
122 | end | 122 | end |
123 | 123 | ||
124 | - it "should compare 2 commits" do | 124 | + it "should compare tags" do |
125 | + get api("/projects/#{project.id}/repository/compare", user), from: 'v1.0.1', to: 'v1.0.2' | ||
126 | + response.status.should == 200 | ||
127 | + json_response['commits'].should be_present | ||
128 | + json_response['diffs'].should be_present | ||
129 | + end | ||
130 | + | ||
131 | + it "should compare commits" do | ||
125 | get api("/projects/#{project.id}/repository/compare", user), from: 'b1e6a9dbf1c85', to: '1e689bfba395' | 132 | get api("/projects/#{project.id}/repository/compare", user), from: 'b1e6a9dbf1c85', to: '1e689bfba395' |
126 | response.status.should == 200 | 133 | response.status.should == 200 |
127 | - json_response['commits'].size.should == 0 | ||
128 | - json_response['diffs'].size.should == 0 | 134 | + json_response['commits'].should be_empty |
135 | + json_response['diffs'].should be_empty | ||
136 | + json_response['compare_same_ref'].should be_false | ||
129 | end | 137 | end |
130 | 138 | ||
131 | - it "should compare 2 commits" do | 139 | + it "should compare commits in reverse order" do |
132 | get api("/projects/#{project.id}/repository/compare", user), from: '1e689bfba395', to: 'b1e6a9dbf1c85' | 140 | get api("/projects/#{project.id}/repository/compare", user), from: '1e689bfba395', to: 'b1e6a9dbf1c85' |
133 | response.status.should == 200 | 141 | response.status.should == 200 |
134 | - json_response['commits'].size.should == 4 | ||
135 | - json_response['diffs'].size.should == 9 | 142 | + json_response['commits'].should be_present |
143 | + json_response['diffs'].should be_present | ||
144 | + end | ||
145 | + | ||
146 | + it "should compare same refs" do | ||
147 | + get api("/projects/#{project.id}/repository/compare", user), from: 'master', to: 'master' | ||
148 | + response.status.should == 200 | ||
149 | + json_response['commits'].should be_empty | ||
150 | + json_response['diffs'].should be_empty | ||
151 | + json_response['compare_same_ref'].should be_true | ||
136 | end | 152 | end |
137 | end | 153 | end |
138 | end | 154 | end |