Skip to content
Snippets Groups Projects
Commit 31409030 authored by Felipe Artur's avatar Felipe Artur
Browse files

Create compare object with default branch when target branch is missing

parent 608711c2
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -2,18 +2,14 @@ module MergeRequests
class BuildService < MergeRequests::BaseService
def execute
self.merge_request = MergeRequest.new(params)
merge_request.can_be_created = true
merge_request.compare_commits = []
merge_request.source_project = find_source_project
merge_request.target_project = find_target_project
merge_request.target_branch = find_target_branch
merge_request.can_be_created = branches_valid? && source_branch_specified? && target_branch_specified?
 
if branches_specified? && branches_valid?
compare_branches
assign_title_and_description
else
merge_request.can_be_created = false
end
compare_branches if branches_present?
assign_title_and_description if merge_request.can_be_created
 
merge_request
end
Loading
Loading
@@ -37,11 +33,17 @@ module MergeRequests
target_branch || target_project.default_branch
end
 
def branches_specified?
params[:source_branch] && params[:target_branch]
def source_branch_specified?
params[:source_branch].present?
end
def target_branch_specified?
params[:target_branch].present?
end
 
def branches_valid?
return false unless source_branch_specified? || target_branch_specified?
validate_branches
errors.blank?
end
Loading
Loading
@@ -55,8 +57,10 @@ module MergeRequests
target_branch
)
 
merge_request.compare_commits = compare.commits
merge_request.compare = compare
if compare
merge_request.compare_commits = compare.commits
merge_request.compare = compare
end
end
 
def validate_branches
Loading
Loading
---
title: Use default branch as target_branch when parameter is missing
merge_request:
author:
Loading
Loading
@@ -44,15 +44,14 @@ describe MergeRequests::BuildService, services: true do
end
end
 
context 'missing target branch' do
let(:target_branch) { '' }
context 'when target branch is missing' do
let(:target_branch) { nil }
let(:commits) { Commit.decorate([commit_1], project) }
 
it 'forbids the merge request from being created' do
it 'creates compare object with target branch as default branch' do
expect(merge_request.can_be_created).to eq(false)
end
it 'adds an error message to the merge request' do
expect(merge_request.errors).to contain_exactly('You must select source and target branch')
expect(merge_request.compare).to be_present
expect(merge_request.target_branch).to eq(project.default_branch)
end
end
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment