From 78e36780be31257a59cb3076ba5402e380ca240f Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Sun, 31 Jan 2016 11:05:47 +0200 Subject: Added '/api/v3/projects/:id/merge_requests/:merge_request_id/closes_issues' route in the API Added some documentation for it Added to changelog Added curl example and an attribute table Moved the api route definition from "lib/api/issues.rb" to "lib/api/merge_requests.rb" Fixed the attributes and changed the documentation to be at "merge_requests.md" too Changed generic titles to more specific titles added an underscore added tests. it depends on a newer version of gitlab-test project I'm doing a since I need to add a branch to the `gitlab-test` repo removed the before using 'iid' instead of 'id' in the description to reference the issues. that makes the tests pass Removed the 'closes-issues' key from test_env. so it should pass the tests Moved the two initializations to the describe block Changed the changelog --- spec/factories/merge_requests.rb | 6 ++++++ spec/requests/api/merge_requests_spec.rb | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'spec') diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb index 0c6a881f868..777bdb95008 100644 --- a/spec/factories/merge_requests.rb +++ b/spec/factories/merge_requests.rb @@ -73,6 +73,12 @@ FactoryGirl.define do merge_user author end + trait :with_closes_issues do + source_branch "markdown" + target_branch "master" + state :opened + end + factory :closed_merge_request, traits: [:closed] factory :reopened_merge_request, traits: [:reopened] factory :merge_request_with_diffs, traits: [:with_diffs] diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb index d7bfa17b0b1..90faf82fc01 100644 --- a/spec/requests/api/merge_requests_spec.rb +++ b/spec/requests/api/merge_requests_spec.rb @@ -448,6 +448,32 @@ describe API::API, api: true do end end + describe "GET :id/merge_requests/:merge_request_id/closes_issues" do + let(:merge_request_with_closes_issues) { create(:merge_request, :with_closes_issues, author: user, assignee: user, source_project: project, target_project: project, title: "Closed ##{issue.id}", created_at: base_time + 3.seconds, description: "This should close ##{issue.iid}") } + let(:issue) do + create :issue, + author: user, + assignee: user, + project: project, + milestone: nil + end + + it "should return the issues that will be closed on merge" do + get api("/projects/#{project.id}/merge_requests/#{merge_request_with_closes_issues.id}/closes_issues", user) + expect(response.status).to eq(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(1) + expect(json_response.first['id']).to eq(issue.id) + end + + it "should return an empty array when there are no issues to be closed" do + get api("/projects/#{project.id}/merge_requests/#{merge_request.id}/closes_issues", user) + expect(response.status).to eq(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(0) + end + end + def mr_with_later_created_and_updated_at_time merge_request merge_request.created_at += 1.hour -- cgit v1.2.3 From b91d1890a8f33566d52c653e9ae083a3a3329590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Wed, 10 Feb 2016 17:11:23 +0100 Subject: Pass current_user to merge_request.closes_issues in API ans streamline MR API specs --- spec/factories/merge_requests.rb | 6 ------ spec/requests/api/merge_requests_spec.rb | 20 ++++++++------------ 2 files changed, 8 insertions(+), 18 deletions(-) (limited to 'spec') diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb index 777bdb95008..0c6a881f868 100644 --- a/spec/factories/merge_requests.rb +++ b/spec/factories/merge_requests.rb @@ -73,12 +73,6 @@ FactoryGirl.define do merge_user author end - trait :with_closes_issues do - source_branch "markdown" - target_branch "master" - state :opened - end - factory :closed_merge_request, traits: [:closed] factory :reopened_merge_request, traits: [:reopened] factory :merge_request_with_diffs, traits: [:with_diffs] diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb index 90faf82fc01..7a722777d59 100644 --- a/spec/requests/api/merge_requests_spec.rb +++ b/spec/requests/api/merge_requests_spec.rb @@ -448,25 +448,21 @@ describe API::API, api: true do end end - describe "GET :id/merge_requests/:merge_request_id/closes_issues" do - let(:merge_request_with_closes_issues) { create(:merge_request, :with_closes_issues, author: user, assignee: user, source_project: project, target_project: project, title: "Closed ##{issue.id}", created_at: base_time + 3.seconds, description: "This should close ##{issue.iid}") } - let(:issue) do - create :issue, - author: user, - assignee: user, - project: project, - milestone: nil - end + describe 'GET :id/merge_requests/:merge_request_id/closes_issues' do + it 'returns the issue that will be closed on merge' do + issue = create(:issue, project: project) + mr = merge_request.tap do |mr| + mr.update_attribute(:description, "Closes #{issue.to_reference(mr.project)}") + end - it "should return the issues that will be closed on merge" do - get api("/projects/#{project.id}/merge_requests/#{merge_request_with_closes_issues.id}/closes_issues", user) + get api("/projects/#{project.id}/merge_requests/#{mr.id}/closes_issues", user) expect(response.status).to eq(200) expect(json_response).to be_an Array expect(json_response.length).to eq(1) expect(json_response.first['id']).to eq(issue.id) end - it "should return an empty array when there are no issues to be closed" do + it 'returns an empty array when there are no issues to be closed' do get api("/projects/#{project.id}/merge_requests/#{merge_request.id}/closes_issues", user) expect(response.status).to eq(200) expect(json_response).to be_an Array -- cgit v1.2.3