summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--lib/api/merge_requests.rb4
-rw-r--r--spec/requests/api/merge_requests_spec.rb15
3 files changed, 14 insertions, 6 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 72bd6984869..91a7a22fe1b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -14,6 +14,7 @@ v 6.9.0
- Fix wiki backup skip bug
- Two Step MR creation process
- Remove unwanted files from satellite working directory with git clean -fdx
+ - Accept merge request via API (sponsored by O'Reilly Media)
v 6.8.0
- Ability to at mention users that are participating in issue and merge req. discussion
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 3dffe7bd4df..7fb135b37b8 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -34,7 +34,7 @@ module API
when "closed" then user_project.merge_requests.closed
when "merged" then user_project.merge_requests.merged
else user_project.merge_requests
- end
+ end
present paginate(mrs), with: Entities::MergeRequest
end
@@ -129,7 +129,7 @@ module API
:push_code
end
- if can?(current_user, action, project)
+ if can?(current_user, action, user_project)
if merge_request.unchecked?
merge_request.check_if_can_be_merged
end
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index db7c30e1ab8..b47cbbee773 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -183,11 +183,18 @@ describe API::API, api: true do
end
end
- describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do
- it "should return merge_request" do
- put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "merge"
+ describe "PUT /projects/:id/merge_request/:merge_request_id/merge" do
+ it "should return merge_request in case of success" do
+ MergeRequest.any_instance.stub(can_be_merged?: true, automerge!: true)
+ put api("/projects/#{project.id}/merge_request/#{merge_request.id}/merge", user)
response.status.should == 200
- json_response['state'].should == 'merged'
+ end
+
+ it "should return 405 if branch can't be merged" do
+ MergeRequest.any_instance.stub(can_be_merged?: false)
+ put api("/projects/#{project.id}/merge_request/#{merge_request.id}/merge", user)
+ response.status.should == 405
+ json_response['message'].should == 'Branch cannot be merged'
end
end