Commit 29f70acc987abe0b188ef187c70f179088d79589

Authored by Andrew8xx8
1 parent b45e9aef

Merge Request uses StateMachine now

app/models/merge_request.rb
@@ -25,7 +25,7 @@ class MergeRequest < ActiveRecord::Base @@ -25,7 +25,7 @@ class MergeRequest < ActiveRecord::Base
25 include Issuable 25 include Issuable
26 26
27 attr_accessible :title, :assignee_id, :target_branch, :source_branch, :milestone_id, 27 attr_accessible :title, :assignee_id, :target_branch, :source_branch, :milestone_id,
28 - :author_id_of_changes 28 + :author_id_of_changes, :state_event
29 29
30 attr_accessor :should_remove_source_branch 30 attr_accessor :should_remove_source_branch
31 31
lib/api/entities.rb
@@ -81,7 +81,7 @@ module Gitlab @@ -81,7 +81,7 @@ module Gitlab
81 end 81 end
82 82
83 class MergeRequest < Grape::Entity 83 class MergeRequest < Grape::Entity
84 - expose :id, :target_branch, :source_branch, :project_id, :title, :closed, :merged 84 + expose :id, :target_branch, :source_branch, :project_id, :title, :state
85 expose :author, :assignee, using: Entities::UserBasic 85 expose :author, :assignee, using: Entities::UserBasic
86 end 86 end
87 87
lib/api/merge_requests.rb
@@ -73,12 +73,12 @@ module Gitlab @@ -73,12 +73,12 @@ module Gitlab
73 # target_branch - The target branch 73 # target_branch - The target branch
74 # assignee_id - Assignee user ID 74 # assignee_id - Assignee user ID
75 # title - Title of MR 75 # title - Title of MR
76 - # closed - Status of MR. true - closed 76 + # state_event - Status of MR. (close|reopen|merge)
77 # Example: 77 # Example:
78 # PUT /projects/:id/merge_request/:merge_request_id 78 # PUT /projects/:id/merge_request/:merge_request_id
79 # 79 #
80 put ":id/merge_request/:merge_request_id" do 80 put ":id/merge_request/:merge_request_id" do
81 - attrs = attributes_for_keys [:source_branch, :target_branch, :assignee_id, :title, :closed] 81 + attrs = attributes_for_keys [:source_branch, :target_branch, :assignee_id, :title, :state_event]
82 merge_request = user_project.merge_requests.find(params[:merge_request_id]) 82 merge_request = user_project.merge_requests.find(params[:merge_request_id])
83 83
84 authorize! :modify_merge_request, merge_request 84 authorize! :modify_merge_request, merge_request
spec/requests/api/merge_requests_spec.rb
@@ -43,6 +43,23 @@ describe Gitlab::API do @@ -43,6 +43,23 @@ describe Gitlab::API do
43 end 43 end
44 end 44 end
45 45
  46 + describe "PUT /projects/:id/merge_request/:merge_request_id to close MR" do
  47 + it "should return merge_request" do
  48 + put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "close"
  49 + response.status.should == 200
  50 + json_response['state'].should == 'closed'
  51 + end
  52 + end
  53 +
  54 + describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do
  55 + it "should return merge_request" do
  56 + put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "merge"
  57 + response.status.should == 200
  58 + json_response['state'].should == 'merged'
  59 + end
  60 + end
  61 +
  62 +
46 describe "PUT /projects/:id/merge_request/:merge_request_id" do 63 describe "PUT /projects/:id/merge_request/:merge_request_id" do
47 it "should return merge_request" do 64 it "should return merge_request" do
48 put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), title: "New title" 65 put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), title: "New title"