Merge branch '2-step-mr' into 'master'
2 step merge request process
This commit is contained in:
commit
4917dc6469
|
@ -1,7 +1,7 @@
|
||||||
@projectUsersSelect =
|
@projectUsersSelect =
|
||||||
init: ->
|
init: ->
|
||||||
$('.ajax-project-users-select').each (i, select) ->
|
$('.ajax-project-users-select').each (i, select) ->
|
||||||
project_id = $('body').data('project-id')
|
project_id = $(select).data('project-id') || $('body').data('project-id')
|
||||||
|
|
||||||
$(select).select2
|
$(select).select2
|
||||||
placeholder: $(select).data('placeholder') || "Search for a user"
|
placeholder: $(select).data('placeholder') || "Search for a user"
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
|
|
||||||
.mr_source_commit,
|
.mr_source_commit,
|
||||||
.mr_target_commit {
|
.mr_target_commit {
|
||||||
margin-top: 10px;
|
|
||||||
.commit {
|
.commit {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 2px 0;
|
padding: 2px 0;
|
||||||
|
|
|
@ -62,11 +62,27 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||||
@merge_request.source_project = @project unless @merge_request.source_project
|
@merge_request.source_project = @project unless @merge_request.source_project
|
||||||
@merge_request.target_project ||= (@project.forked_from_project || @project)
|
@merge_request.target_project ||= (@project.forked_from_project || @project)
|
||||||
@target_branches = @merge_request.target_project.nil? ? [] : @merge_request.target_project.repository.branch_names
|
@target_branches = @merge_request.target_project.nil? ? [] : @merge_request.target_project.repository.branch_names
|
||||||
|
|
||||||
@merge_request.target_branch ||= @merge_request.target_project.default_branch
|
@merge_request.target_branch ||= @merge_request.target_project.default_branch
|
||||||
|
|
||||||
@source_project = @merge_request.source_project
|
@source_project = @merge_request.source_project
|
||||||
@merge_request
|
|
||||||
|
if @merge_request.target_branch && @merge_request.source_branch
|
||||||
|
compare_action = Gitlab::Satellite::CompareAction.new(
|
||||||
|
current_user,
|
||||||
|
@merge_request.target_project,
|
||||||
|
@merge_request.target_branch,
|
||||||
|
@merge_request.source_project,
|
||||||
|
@merge_request.source_branch
|
||||||
|
)
|
||||||
|
|
||||||
|
@commits = compare_action.commits
|
||||||
|
@commits.map! { |commit| Commit.new(commit) }
|
||||||
|
@commit = @commits.first
|
||||||
|
|
||||||
|
@diffs = compare_action.diffs
|
||||||
|
@merge_request.title = @merge_request.source_branch.titleize.humanize
|
||||||
|
@target_project = @merge_request.target_project
|
||||||
|
@target_repo = @target_project.repository
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
|
@ -80,7 +96,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||||
@merge_request = MergeRequests::CreateService.new(project, current_user, params[:merge_request]).execute
|
@merge_request = MergeRequests::CreateService.new(project, current_user, params[:merge_request]).execute
|
||||||
|
|
||||||
if @merge_request.valid?
|
if @merge_request.valid?
|
||||||
redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully created.'
|
redirect_to project_merge_request_path(@merge_request.target_project, @merge_request), notice: 'Merge request was successfully created.'
|
||||||
else
|
else
|
||||||
@source_project = @merge_request.source_project
|
@source_project = @merge_request.source_project
|
||||||
@target_project = @merge_request.target_project
|
@target_project = @merge_request.target_project
|
||||||
|
|
|
@ -82,7 +82,7 @@ module IssuesHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def milestone_options object
|
def milestone_options object
|
||||||
options_from_collection_for_select(@project.milestones.active, 'id', 'title', object.milestone_id)
|
options_from_collection_for_select(object.project.milestones.active, 'id', 'title', object.milestone_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def issue_box_class(item)
|
def issue_box_class(item)
|
||||||
|
|
|
@ -14,7 +14,7 @@ module SelectsHelper
|
||||||
css_class << (opts[:class] || '')
|
css_class << (opts[:class] || '')
|
||||||
value = opts[:selected] || ''
|
value = opts[:selected] || ''
|
||||||
placeholder = opts[:placeholder] || 'Select user'
|
placeholder = opts[:placeholder] || 'Select user'
|
||||||
|
project_id = opts[:project_id] || @project.id
|
||||||
hidden_field_tag(id, value, class: css_class, 'data-placeholder' => placeholder)
|
hidden_field_tag(id, value, class: css_class, 'data-placeholder' => placeholder, 'data-project-id' => project_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -253,6 +253,14 @@ class MergeRequest < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def target_project_namespace
|
||||||
|
if target_project && target_project.namespace
|
||||||
|
target_project.namespace.path
|
||||||
|
else
|
||||||
|
"(removed)"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def source_branch_exists?
|
def source_branch_exists?
|
||||||
return false unless self.source_project
|
return false unless self.source_project
|
||||||
|
|
||||||
|
|
|
@ -14,33 +14,6 @@
|
||||||
- @merge_request.errors.full_messages.each do |msg|
|
- @merge_request.errors.full_messages.each do |msg|
|
||||||
%div= msg
|
%div= msg
|
||||||
|
|
||||||
.merge-request-branches
|
|
||||||
.form-group
|
|
||||||
= label_tag nil, class: 'control-label' do
|
|
||||||
From
|
|
||||||
.col-sm-10
|
|
||||||
.clearfix
|
|
||||||
.pull-left
|
|
||||||
= f.select(:source_project_id, [[@merge_request.source_project_path,@merge_request.source_project.id]] , {}, { class: 'source_project select2 span3', disabled: @merge_request.persisted? })
|
|
||||||
.pull-left
|
|
||||||
|
|
||||||
= f.select(:source_branch, @merge_request.source_branches, { include_blank: "Select branch" }, {class: 'source_branch select2 span2'})
|
|
||||||
.mr_source_commit
|
|
||||||
%br
|
|
||||||
.form-group
|
|
||||||
= label_tag nil, class: 'control-label' do
|
|
||||||
To
|
|
||||||
.col-sm-10
|
|
||||||
.clearfix
|
|
||||||
.pull-left
|
|
||||||
- projects = @project.forked_from_project.nil? ? [@project] : [@project, @project.forked_from_project]
|
|
||||||
= f.select(:target_project_id, options_from_collection_for_select(projects, 'id', 'path_with_namespace', f.object.target_project_id), {}, { class: 'target_project select2 span3', disabled: @merge_request.persisted? })
|
|
||||||
.pull-left
|
|
||||||
|
|
||||||
= f.select(:target_branch, @merge_request.target_branches, { include_blank: "Select branch" }, {class: 'target_branch select2 span2'})
|
|
||||||
.mr_target_commit
|
|
||||||
|
|
||||||
%hr
|
|
||||||
.merge-request-form-info
|
.merge-request-form-info
|
||||||
.form-group
|
.form-group
|
||||||
= f.label :title, class: 'control-label' do
|
= f.label :title, class: 'control-label' do
|
||||||
|
@ -51,6 +24,23 @@
|
||||||
.col-sm-10
|
.col-sm-10
|
||||||
= f.text_area :description, class: "form-control js-gfm-input", rows: 14
|
= f.text_area :description, class: "form-control js-gfm-input", rows: 14
|
||||||
%p.hint Description is parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
|
%p.hint Description is parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
|
||||||
|
%hr
|
||||||
|
.form-group
|
||||||
|
.issue-assignee
|
||||||
|
= f.label :assignee_id, class: 'control-label' do
|
||||||
|
%i.icon-user
|
||||||
|
Assign to
|
||||||
|
.col-sm-10
|
||||||
|
= project_users_select_tag('merge_request[assignee_id]', placeholder: 'Select a user', class: 'custom-form-control', selected: @merge_request.assignee_id)
|
||||||
|
|
||||||
|
= link_to 'Assign to me', '#', class: 'btn btn-small assign-to-me-link'
|
||||||
|
.form-group
|
||||||
|
.issue-milestone
|
||||||
|
= f.label :milestone_id, class: 'control-label' do
|
||||||
|
%i.icon-time
|
||||||
|
Milestone
|
||||||
|
.col-sm-10= f.select(:milestone_id, milestone_options(@merge_request), { include_blank: "Select milestone" }, {class: 'select2'})
|
||||||
|
|
||||||
|
|
||||||
.form-actions
|
.form-actions
|
||||||
- if @merge_request.new_record?
|
- if @merge_request.new_record?
|
||||||
|
@ -66,20 +56,7 @@
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
disableButtonIfEmptyField("#merge_request_title", ".btn-save");
|
disableButtonIfEmptyField("#merge_request_title", ".btn-save");
|
||||||
|
$('.assign-to-me-link').on('click', function(e){
|
||||||
var source_branch = $("#merge_request_source_branch")
|
$('#merge_request_assignee_id').val("#{current_user.id}").trigger("change");
|
||||||
, target_branch = $("#merge_request_target_branch")
|
e.preventDefault();
|
||||||
, target_project = $("#merge_request_target_project_id");
|
|
||||||
|
|
||||||
$.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: source_branch.val() });
|
|
||||||
$.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: target_branch.val() });
|
|
||||||
|
|
||||||
target_project.on("change", function() {
|
|
||||||
$.get("#{update_branches_project_merge_requests_path(@source_project)}", {target_project_id: $(this).val() });
|
|
||||||
});
|
|
||||||
source_branch.on("change", function() {
|
|
||||||
$.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: $(this).val() });
|
|
||||||
});
|
|
||||||
target_branch.on("change", function() {
|
|
||||||
$.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
%h3.page-title Compare branches for new Merge Request
|
||||||
|
%hr
|
||||||
|
|
||||||
|
= form_for [@project, @merge_request], url: new_project_merge_request_path(@project), method: :get, html: { class: "merge-request-form form-inline" } do |f|
|
||||||
|
.hide.alert.alert-danger.mr-compare-errors
|
||||||
|
.merge-request-branches.row
|
||||||
|
.col-md-6
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
%strong Source branch
|
||||||
|
.panel-body
|
||||||
|
= f.select(:source_project_id, [[@merge_request.source_project_path,@merge_request.source_project.id]] , {}, { class: 'source_project select2 span3', disabled: @merge_request.persisted? })
|
||||||
|
|
||||||
|
= f.select(:source_branch, @merge_request.source_branches, { include_blank: "Select branch" }, {class: 'source_branch select2 span2'})
|
||||||
|
.panel-footer
|
||||||
|
.mr_source_commit
|
||||||
|
|
||||||
|
.col-md-6
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
%strong Target branch
|
||||||
|
.panel-body
|
||||||
|
- projects = @project.forked_from_project.nil? ? [@project] : [@project, @project.forked_from_project]
|
||||||
|
= f.select(:target_project_id, options_from_collection_for_select(projects, 'id', 'path_with_namespace', f.object.target_project_id), {}, { class: 'target_project select2 span3', disabled: @merge_request.persisted? })
|
||||||
|
|
||||||
|
= f.select(:target_branch, @merge_request.target_branches, { include_blank: "Select branch" }, {class: 'target_branch select2 span2'})
|
||||||
|
.panel-footer
|
||||||
|
.mr_target_commit
|
||||||
|
|
||||||
|
-if @merge_request.errors.any?
|
||||||
|
.alert.alert-danger
|
||||||
|
- @merge_request.errors.full_messages.each do |msg|
|
||||||
|
%div= msg
|
||||||
|
|
||||||
|
- if @merge_request.source_branch.present? && @merge_request.target_branch.present?
|
||||||
|
.light-well
|
||||||
|
%center
|
||||||
|
%h4
|
||||||
|
There isn't anything to merge.
|
||||||
|
%p.slead
|
||||||
|
- if @merge_request.source_branch == @merge_request.target_branch
|
||||||
|
You'll need to use different branch names to get a valid comparison.
|
||||||
|
- else
|
||||||
|
%span.label-branch #{@merge_request.source_branch}
|
||||||
|
and
|
||||||
|
%span.label-branch #{@merge_request.target_branch}
|
||||||
|
are the same.
|
||||||
|
|
||||||
|
|
||||||
|
%hr
|
||||||
|
= f.submit 'Compare branches', class: "btn btn-primary mr-compare-btn"
|
||||||
|
|
||||||
|
:javascript
|
||||||
|
var source_branch = $("#merge_request_source_branch")
|
||||||
|
, target_branch = $("#merge_request_target_branch")
|
||||||
|
, target_project = $("#merge_request_target_project_id");
|
||||||
|
|
||||||
|
$.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: source_branch.val() });
|
||||||
|
$.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: target_branch.val() });
|
||||||
|
|
||||||
|
target_project.on("change", function() {
|
||||||
|
$.get("#{update_branches_project_merge_requests_path(@source_project)}", {target_project_id: $(this).val() });
|
||||||
|
});
|
||||||
|
source_branch.on("change", function() {
|
||||||
|
$.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: $(this).val() });
|
||||||
|
$(".mr-compare-errors").fadeOut();
|
||||||
|
$(".mr-compare-btn").enable();
|
||||||
|
});
|
||||||
|
target_branch.on("change", function() {
|
||||||
|
$.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });
|
||||||
|
$(".mr-compare-errors").fadeOut();
|
||||||
|
$(".mr-compare-btn").enable();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
:coffeescript
|
||||||
|
|
||||||
|
$(".merge-request-form").on 'submit', ->
|
||||||
|
if $("#merge_request_source_branch").val() is "" or $('#merge_request_target_branch').val() is ""
|
||||||
|
$(".mr-compare-errors").html("You must select source and target branch to proceed")
|
||||||
|
$(".mr-compare-errors").fadeIn()
|
||||||
|
event.preventDefault()
|
||||||
|
return
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
%h3.page-title
|
||||||
|
New merge request
|
||||||
|
%p.slead
|
||||||
|
From
|
||||||
|
%strong.monospace
|
||||||
|
#{@merge_request.source_project_namespace}:#{@merge_request.source_branch}
|
||||||
|
into
|
||||||
|
%strong.monospace
|
||||||
|
#{@merge_request.target_project_namespace}:#{@merge_request.target_branch}
|
||||||
|
|
||||||
|
%span.pull-right
|
||||||
|
= link_to 'Change branches', new_project_merge_request_path(@project)
|
||||||
|
|
||||||
|
= form_for [@project, @merge_request], html: { class: "merge-request-form" } do |f|
|
||||||
|
.panel.panel-default
|
||||||
|
|
||||||
|
.panel-body
|
||||||
|
.form-group
|
||||||
|
.light
|
||||||
|
= f.label :title do
|
||||||
|
= "Title *"
|
||||||
|
= f.text_field :title, class: "form-control input-lg js-gfm-input", maxlength: 255, rows: 5, required: true
|
||||||
|
.form-group
|
||||||
|
.light
|
||||||
|
= f.label :description, "Description"
|
||||||
|
= f.text_area :description, class: "form-control js-gfm-input", rows: 10
|
||||||
|
%p.hint Description is parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
|
||||||
|
.form-group
|
||||||
|
.issue-assignee
|
||||||
|
= f.label :assignee_id do
|
||||||
|
%i.icon-user
|
||||||
|
Assign to
|
||||||
|
%div
|
||||||
|
= project_users_select_tag('merge_request[assignee_id]', placeholder: 'Select a user', class: 'custom-form-control', selected: @merge_request.assignee_id, project_id: @merge_request.target_project_id)
|
||||||
|
|
||||||
|
= link_to 'Assign to me', '#', class: 'btn btn-small assign-to-me-link'
|
||||||
|
.form-group
|
||||||
|
.issue-milestone
|
||||||
|
= f.label :milestone_id do
|
||||||
|
%i.icon-time
|
||||||
|
Milestone
|
||||||
|
%div= f.select(:milestone_id, milestone_options(@merge_request), { include_blank: "Select milestone" }, {class: 'select2'})
|
||||||
|
.panel-footer
|
||||||
|
- if @target_repo.contribution_guide
|
||||||
|
- contribution_guide_url = project_blob_path(@target_project, tree_join(@target_repo.root_ref, @target_repo.contribution_guide.name))
|
||||||
|
%p
|
||||||
|
Please review the
|
||||||
|
%strong #{link_to "guidelines for contribution", contribution_guide_url}
|
||||||
|
to this repository.
|
||||||
|
= f.hidden_field :source_project_id
|
||||||
|
= f.hidden_field :target_project_id
|
||||||
|
= f.hidden_field :target_branch
|
||||||
|
= f.hidden_field :source_branch
|
||||||
|
= f.submit 'Submit merge request', class: "btn btn-create"
|
||||||
|
|
||||||
|
.mr-compare
|
||||||
|
%div.ui-box
|
||||||
|
.title
|
||||||
|
Commits (#{@commits.count})
|
||||||
|
- if @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE
|
||||||
|
%ul.well-list
|
||||||
|
- Commit.decorate(@commits.first(MergeRequestDiff::COMMITS_SAFE_SIZE)).each do |commit|
|
||||||
|
= render "projects/commits/inline_commit", commit: commit, project: @project
|
||||||
|
%li.warning-row.unstyled
|
||||||
|
other #{@commits.size - MergeRequestDiff::COMMITS_SAFE_SIZE} commits hidden to prevent performance issues.
|
||||||
|
- else
|
||||||
|
%ul.well-list= render Commit.decorate(@commits), project: @project
|
||||||
|
|
||||||
|
%h4 Changes
|
||||||
|
- if @diffs.present?
|
||||||
|
= render "projects/commits/diffs", diffs: @diffs, project: @project
|
||||||
|
- elsif @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE
|
||||||
|
.bs-callout.bs-callout-danger
|
||||||
|
%h4 This comparison includes more than #{MergeRequestDiff::COMMITS_SAFE_SIZE} commits.
|
||||||
|
%p To preserve performance the line changes are not shown.
|
||||||
|
|
||||||
|
|
||||||
|
:javascript
|
||||||
|
$('.assign-to-me-link').on('click', function(e){
|
||||||
|
$('#merge_request_assignee_id').val("#{current_user.id}").trigger("change");
|
||||||
|
e.preventDefault();
|
||||||
|
});
|
|
@ -1,7 +1,2 @@
|
||||||
:plain
|
:plain
|
||||||
$(".mr_source_commit").html("#{commit_to_html(@commit, @source_project, false)}");
|
$(".mr_source_commit").html("#{commit_to_html(@commit, @source_project, false)}");
|
||||||
var mrTitle = $('#merge_request_title');
|
|
||||||
|
|
||||||
if(mrTitle.val().length == 0) {
|
|
||||||
mrTitle.val("#{params[:ref].titleize.humanize}");
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
%h3.page-title New Merge Request
|
- if @commits.present?
|
||||||
%hr
|
= render 'new_submit'
|
||||||
= render 'form'
|
- else
|
||||||
|
= render 'new_compare'
|
||||||
|
|
|
@ -39,4 +39,4 @@
|
||||||
- else
|
- else
|
||||||
%span= @merge_request.source_branch
|
%span= @merge_request.source_branch
|
||||||
→
|
→
|
||||||
%spanh= @merge_request.target_branch
|
%span= @merge_request.target_branch
|
||||||
|
|
|
@ -30,11 +30,10 @@ Feature: Project Forked Merge Requests
|
||||||
Given I visit project "Forked Shop" merge requests page
|
Given I visit project "Forked Shop" merge requests page
|
||||||
And I click link "New Merge Request"
|
And I click link "New Merge Request"
|
||||||
And I fill out an invalid "Merge Request On Forked Project" merge request
|
And I fill out an invalid "Merge Request On Forked Project" merge request
|
||||||
And I submit the merge request
|
|
||||||
Then I should see validation errors
|
Then I should see validation errors
|
||||||
|
|
||||||
@javascript
|
@javascript
|
||||||
Scenario: Merge request should target fork repository by default
|
Scenario: Merge request should target fork repository by default
|
||||||
Given I visit project "Forked Shop" merge requests page
|
Given I visit project "Forked Shop" merge requests page
|
||||||
And I click link "New Merge Request"
|
And I click link "New Merge Request"
|
||||||
Then the target repository should be the original repository
|
Then the target repository should be the original repository
|
||||||
|
|
|
@ -53,6 +53,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
|
||||||
|
|
||||||
find(:select, "merge_request_source_branch", {}).value.should == 'master'
|
find(:select, "merge_request_source_branch", {}).value.should == 'master'
|
||||||
find(:select, "merge_request_target_branch", {}).value.should == 'stable'
|
find(:select, "merge_request_target_branch", {}).value.should == 'stable'
|
||||||
|
click_button "Compare branches"
|
||||||
|
|
||||||
fill_in "merge_request_title", with: "Merge Request On Forked Project"
|
fill_in "merge_request_title", with: "Merge Request On Forked Project"
|
||||||
end
|
end
|
||||||
|
@ -148,29 +149,19 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
|
||||||
current_path.should == edit_project_merge_request_path(@project, @merge_request)
|
current_path.should == edit_project_merge_request_path(@project, @merge_request)
|
||||||
page.should have_content "Edit merge request ##{@merge_request.id}"
|
page.should have_content "Edit merge request ##{@merge_request.id}"
|
||||||
find("#merge_request_title").value.should == "Merge Request On Forked Project"
|
find("#merge_request_title").value.should == "Merge Request On Forked Project"
|
||||||
find("#merge_request_source_project_id").value.should == @forked_project.id.to_s
|
|
||||||
find("#merge_request_target_project_id").value.should == @project.id.to_s
|
|
||||||
find("#merge_request_source_branch").value.should have_content "master"
|
|
||||||
verify_commit_link(".mr_source_commit",@forked_project)
|
|
||||||
find("#merge_request_target_branch").value.should have_content "stable"
|
|
||||||
verify_commit_link(".mr_target_commit",@project)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
step 'I fill out an invalid "Merge Request On Forked Project" merge request' do
|
step 'I fill out an invalid "Merge Request On Forked Project" merge request' do
|
||||||
#If this isn't filled in the rest of the validations won't be triggered
|
|
||||||
fill_in "merge_request_title", with: "Merge Request On Forked Project"
|
|
||||||
|
|
||||||
select "Select branch", from: "merge_request_target_branch"
|
select "Select branch", from: "merge_request_target_branch"
|
||||||
|
|
||||||
find(:select, "merge_request_source_project_id", {}).value.should == @forked_project.id.to_s
|
find(:select, "merge_request_source_project_id", {}).value.should == @forked_project.id.to_s
|
||||||
find(:select, "merge_request_target_project_id", {}).value.should == project.id.to_s
|
find(:select, "merge_request_target_project_id", {}).value.should == project.id.to_s
|
||||||
find(:select, "merge_request_source_branch", {}).value.should == ""
|
find(:select, "merge_request_source_branch", {}).value.should == ""
|
||||||
find(:select, "merge_request_target_branch", {}).value.should == ""
|
find(:select, "merge_request_target_branch", {}).value.should == ""
|
||||||
|
click_button "Compare branches"
|
||||||
end
|
end
|
||||||
|
|
||||||
step 'I should see validation errors' do
|
step 'I should see validation errors' do
|
||||||
page.should have_content "Source branch can't be blank"
|
page.should have_content "You must select source and target branch"
|
||||||
page.should have_content "Target branch can't be blank"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
step 'the target repository should be the original repository' do
|
step 'the target repository should be the original repository' do
|
||||||
|
|
|
@ -61,9 +61,10 @@ class ProjectMergeRequests < Spinach::FeatureSteps
|
||||||
end
|
end
|
||||||
|
|
||||||
step 'I submit new merge request "Wiki Feature"' do
|
step 'I submit new merge request "Wiki Feature"' do
|
||||||
fill_in "merge_request_title", with: "Wiki Feature"
|
|
||||||
select "master", from: "merge_request_source_branch"
|
select "master", from: "merge_request_source_branch"
|
||||||
select "notes_refactoring", from: "merge_request_target_branch"
|
select "notes_refactoring", from: "merge_request_target_branch"
|
||||||
|
click_button "Compare branches"
|
||||||
|
fill_in "merge_request_title", with: "Wiki Feature"
|
||||||
click_button "Submit merge request"
|
click_button "Submit merge request"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue