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 25 include Issuable
26 26  
27 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 30 attr_accessor :should_remove_source_branch
31 31  
... ...
lib/api/entities.rb
... ... @@ -81,7 +81,7 @@ module Gitlab
81 81 end
82 82  
83 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 85 expose :author, :assignee, using: Entities::UserBasic
86 86 end
87 87  
... ...
lib/api/merge_requests.rb
... ... @@ -73,12 +73,12 @@ module Gitlab
73 73 # target_branch - The target branch
74 74 # assignee_id - Assignee user ID
75 75 # title - Title of MR
76   - # closed - Status of MR. true - closed
  76 + # state_event - Status of MR. (close|reopen|merge)
77 77 # Example:
78 78 # PUT /projects/:id/merge_request/:merge_request_id
79 79 #
80 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 82 merge_request = user_project.merge_requests.find(params[:merge_request_id])
83 83  
84 84 authorize! :modify_merge_request, merge_request
... ...
spec/requests/api/merge_requests_spec.rb
... ... @@ -43,6 +43,23 @@ describe Gitlab::API do
43 43 end
44 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 63 describe "PUT /projects/:id/merge_request/:merge_request_id" do
47 64 it "should return merge_request" do
48 65 put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), title: "New title"
... ...