Merge branch 'dirceu/gitlab-ce-new-merge-request-from-file-edit' into 'master'
Add option to create merge request when editing/creating a file Replaces !1611 Fixes #3059 See merge request !1820
This commit is contained in:
commit
3a85c93a7a
19 changed files with 184 additions and 144 deletions
|
@ -54,6 +54,7 @@ v 8.2.0
|
|||
- Fix trailing whitespace issue in merge request/issue title
|
||||
- Fix bug when milestone/label filter was empty for dashboard issues page
|
||||
- Add ability to create milestone in group projects from single form
|
||||
- Add option to create merge request when editing/creating a file (Dirceu Tiegs)
|
||||
- Prevent the last owner of a group from being able to delete themselves by 'adding' themselves as a master (James Lopez)
|
||||
|
||||
v 8.1.4
|
||||
|
|
|
@ -23,18 +23,6 @@ class @BlobFileDropzone
|
|||
init: ->
|
||||
this.on 'addedfile', (file) ->
|
||||
$('.dropzone-alerts').html('').hide()
|
||||
commit_message = form.find('#commit_message')[0]
|
||||
|
||||
if /^Upload/.test(commit_message.placeholder)
|
||||
commit_message.placeholder = 'Upload ' + file.name
|
||||
|
||||
return
|
||||
|
||||
this.on 'removedfile', (file) ->
|
||||
commit_message = form.find('#commit_message')[0]
|
||||
|
||||
if /^Upload/.test(commit_message.placeholder)
|
||||
commit_message.placeholder = 'Upload new file'
|
||||
|
||||
return
|
||||
|
||||
|
@ -47,8 +35,9 @@ class @BlobFileDropzone
|
|||
return
|
||||
|
||||
this.on 'sending', (file, xhr, formData) ->
|
||||
formData.append('new_branch', form.find('#new_branch').val())
|
||||
formData.append('commit_message', form.find('#commit_message').val())
|
||||
formData.append('new_branch', form.find('.js-new-branch').val())
|
||||
formData.append('create_merge_request', form.find('.js-create-merge-request').val())
|
||||
formData.append('commit_message', form.find('.js-commit-message').val())
|
||||
return
|
||||
|
||||
# Override behavior of adding error underneath preview
|
||||
|
|
21
app/assets/javascripts/new_commit_form.js.coffee
Normal file
21
app/assets/javascripts/new_commit_form.js.coffee
Normal file
|
@ -0,0 +1,21 @@
|
|||
class @NewCommitForm
|
||||
constructor: (form) ->
|
||||
@newBranch = form.find('.js-new-branch')
|
||||
@originalBranch = form.find('.js-original-branch')
|
||||
@createMergeRequest = form.find('.js-create-merge-request')
|
||||
@createMergeRequestFormGroup = form.find('.js-create-merge-request-form-group')
|
||||
|
||||
@renderDestination()
|
||||
@newBranch.keyup @renderDestination
|
||||
|
||||
renderDestination: =>
|
||||
different = @newBranch.val() != @originalBranch.val()
|
||||
|
||||
if different
|
||||
@createMergeRequestFormGroup.show()
|
||||
@createMergeRequest.prop('checked', true) unless @wasDifferent
|
||||
else
|
||||
@createMergeRequestFormGroup.hide()
|
||||
@createMergeRequest.prop('checked', false)
|
||||
|
||||
@wasDifferent = different
|
28
app/controllers/concerns/creates_merge_request_for_commit.rb
Normal file
28
app/controllers/concerns/creates_merge_request_for_commit.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
module CreatesMergeRequestForCommit
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
def new_merge_request_path
|
||||
if @project.forked?
|
||||
target_project = @project.forked_from_project || @project
|
||||
target_branch = target_project.repository.root_ref
|
||||
else
|
||||
target_project = @project
|
||||
target_branch = @ref
|
||||
end
|
||||
|
||||
new_namespace_project_merge_request_path(
|
||||
@project.namespace,
|
||||
@project,
|
||||
merge_request: {
|
||||
source_project_id: @project.id,
|
||||
target_project_id: target_project.id,
|
||||
source_branch: @new_branch,
|
||||
target_branch: target_branch
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
def create_merge_request?
|
||||
params[:create_merge_request] && @new_branch != @ref
|
||||
end
|
||||
end
|
|
@ -1,6 +1,7 @@
|
|||
# Controller for viewing a file's blame
|
||||
class Projects::BlobController < Projects::ApplicationController
|
||||
include ExtractsPath
|
||||
include CreatesMergeRequestForCommit
|
||||
include ActionView::Helpers::SanitizeHelper
|
||||
|
||||
# Raised when given an invalid file path
|
||||
|
@ -22,21 +23,9 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def create
|
||||
result = Files::CreateService.new(@project, current_user, @commit_params).execute
|
||||
|
||||
if result[:status] == :success
|
||||
flash[:notice] = "The changes have been successfully committed"
|
||||
respond_to do |format|
|
||||
format.html { redirect_to namespace_project_blob_path(@project.namespace, @project, File.join(@target_branch, @file_path)) }
|
||||
format.json { render json: { message: "success", filePath: namespace_project_blob_path(@project.namespace, @project, File.join(@target_branch, @file_path)) } }
|
||||
end
|
||||
else
|
||||
flash[:alert] = result[:message]
|
||||
respond_to do |format|
|
||||
format.html { render :new }
|
||||
format.json { render json: { message: "failed", filePath: namespace_project_blob_path(@project.namespace, @project, @id) } }
|
||||
end
|
||||
end
|
||||
create_commit(Files::CreateService, success_path: after_create_path,
|
||||
failure_view: :new,
|
||||
failure_path: namespace_project_new_blob_path(@project.namespace, @project, @ref))
|
||||
end
|
||||
|
||||
def show
|
||||
|
@ -47,21 +36,9 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def update
|
||||
result = Files::UpdateService.new(@project, current_user, @commit_params).execute
|
||||
|
||||
if result[:status] == :success
|
||||
flash[:notice] = "Your changes have been successfully committed"
|
||||
respond_to do |format|
|
||||
format.html { redirect_to after_edit_path }
|
||||
format.json { render json: { message: "success", filePath: after_edit_path } }
|
||||
end
|
||||
else
|
||||
flash[:alert] = result[:message]
|
||||
respond_to do |format|
|
||||
format.html { render :edit }
|
||||
format.json { render json: { message: "failed", filePath: namespace_project_new_blob_path(@project.namespace, @project, @id) } }
|
||||
end
|
||||
end
|
||||
create_commit(Files::UpdateService, success_path: after_edit_path,
|
||||
failure_view: :edit,
|
||||
failure_path: namespace_project_blob_path(@project.namespace, @project, @id))
|
||||
end
|
||||
|
||||
def preview
|
||||
|
@ -77,7 +54,7 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
|
||||
if result[:status] == :success
|
||||
flash[:notice] = "Your changes have been successfully committed"
|
||||
redirect_to namespace_project_tree_path(@project.namespace, @project, @target_branch)
|
||||
redirect_to after_destroy_path
|
||||
else
|
||||
flash[:alert] = result[:message]
|
||||
render :show
|
||||
|
@ -131,15 +108,51 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
render_404
|
||||
end
|
||||
|
||||
def create_commit(service, success_path:, failure_view:, failure_path:)
|
||||
result = service.new(@project, current_user, @commit_params).execute
|
||||
|
||||
if result[:status] == :success
|
||||
flash[:notice] = "Your changes have been successfully committed"
|
||||
respond_to do |format|
|
||||
format.html { redirect_to success_path }
|
||||
format.json { render json: { message: "success", filePath: success_path } }
|
||||
end
|
||||
else
|
||||
flash[:alert] = result[:message]
|
||||
respond_to do |format|
|
||||
format.html { render failure_view }
|
||||
format.json { render json: { message: "failed", filePath: failure_path } }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def after_create_path
|
||||
@after_create_path ||=
|
||||
if create_merge_request?
|
||||
new_merge_request_path
|
||||
else
|
||||
namespace_project_blob_path(@project.namespace, @project, File.join(@new_branch, @file_path))
|
||||
end
|
||||
end
|
||||
|
||||
def after_edit_path
|
||||
@after_edit_path ||=
|
||||
if from_merge_request
|
||||
if create_merge_request?
|
||||
new_merge_request_path
|
||||
elsif from_merge_request && @new_branch == @ref
|
||||
diffs_namespace_project_merge_request_path(from_merge_request.target_project.namespace, from_merge_request.target_project, from_merge_request) +
|
||||
"#file-path-#{hexdigest(@path)}"
|
||||
elsif @target_branch.present?
|
||||
namespace_project_blob_path(@project.namespace, @project, File.join(@target_branch, @path))
|
||||
else
|
||||
namespace_project_blob_path(@project.namespace, @project, @id)
|
||||
namespace_project_blob_path(@project.namespace, @project, File.join(@new_branch, @path))
|
||||
end
|
||||
end
|
||||
|
||||
def after_destroy_path
|
||||
@after_destroy_path ||=
|
||||
if create_merge_request?
|
||||
new_merge_request_path
|
||||
else
|
||||
namespace_project_tree_path(@project.namespace, @project, @new_branch)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -154,7 +167,7 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
|
||||
def editor_variables
|
||||
@current_branch = @ref
|
||||
@target_branch = params[:new_branch].present? ? sanitized_new_branch_name : @ref
|
||||
@new_branch = params[:new_branch].present? ? sanitized_new_branch_name : @ref
|
||||
|
||||
@file_path =
|
||||
if action_name.to_s == 'create'
|
||||
|
@ -174,7 +187,7 @@ class Projects::BlobController < Projects::ApplicationController
|
|||
@commit_params = {
|
||||
file_path: @file_path,
|
||||
current_branch: @current_branch,
|
||||
target_branch: @target_branch,
|
||||
target_branch: @new_branch,
|
||||
commit_message: params[:commit_message],
|
||||
file_content: params[:content],
|
||||
file_content_encoding: params[:encoding]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Controller for viewing a repository's file structure
|
||||
class Projects::TreeController < Projects::ApplicationController
|
||||
include ExtractsPath
|
||||
include CreatesMergeRequestForCommit
|
||||
include ActionView::Helpers::SanitizeHelper
|
||||
|
||||
before_action :require_non_empty_project, except: [:new, :create]
|
||||
|
@ -43,7 +44,7 @@ class Projects::TreeController < Projects::ApplicationController
|
|||
if result && result[:status] == :success
|
||||
flash[:notice] = "The directory has been successfully created"
|
||||
respond_to do |format|
|
||||
format.html { redirect_to namespace_project_blob_path(@project.namespace, @project, File.join(@new_branch, @dir_name)) }
|
||||
format.html { redirect_to after_create_dir_path }
|
||||
end
|
||||
else
|
||||
flash[:alert] = message
|
||||
|
@ -53,6 +54,8 @@ class Projects::TreeController < Projects::ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def assign_dir_vars
|
||||
@new_branch = params[:new_branch].present? ? sanitize(strip_tags(params[:new_branch])) : @ref
|
||||
@dir_name = File.join(@path, params[:dir_name])
|
||||
|
@ -63,4 +66,12 @@ class Projects::TreeController < Projects::ApplicationController
|
|||
commit_message: params[:commit_message],
|
||||
}
|
||||
end
|
||||
|
||||
def after_create_dir_path
|
||||
if create_merge_request?
|
||||
new_merge_request_path
|
||||
else
|
||||
namespace_project_blob_path(@project.namespace, @project, File.join(@new_branch, @dir_name))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,14 +8,6 @@ module MergeRequestsHelper
|
|||
)
|
||||
end
|
||||
|
||||
def new_mr_path_for_fork_from_push_event(event)
|
||||
new_namespace_project_merge_request_path(
|
||||
event.project.namespace,
|
||||
event.project,
|
||||
new_mr_from_push_event(event, event.project.forked_from_project)
|
||||
)
|
||||
end
|
||||
|
||||
def new_mr_from_push_event(event, target_project)
|
||||
{
|
||||
merge_request: {
|
||||
|
|
|
@ -19,4 +19,4 @@
|
|||
- if allowed_tree_edit?
|
||||
.btn-group{ role: "group" }
|
||||
%button.btn.btn-default{ 'data-target' => '#modal-upload-blob', 'data-toggle' => 'modal' } Replace
|
||||
%button.btn.btn-remove{ 'data-target' => '#modal-remove-blob', 'data-toggle' => 'modal' } Remove
|
||||
%button.btn.btn-remove{ 'data-target' => '#modal-remove-blob', 'data-toggle' => 'modal' } Delete
|
||||
|
|
|
@ -5,21 +5,19 @@
|
|||
%a.close{href: "#", "data-dismiss" => "modal"} ×
|
||||
%h3.page-title Create New Directory
|
||||
.modal-body
|
||||
= form_tag namespace_project_create_dir_path(@project.namespace, @project, @id), method: :post, remote: false, id: 'dir-create-form', class: 'form-horizontal' do
|
||||
= form_tag namespace_project_create_dir_path(@project.namespace, @project, @id), method: :post, remote: false, class: 'form-horizontal js-create-dir-form' do
|
||||
.form-group
|
||||
= label_tag :dir_name, 'Directory Name', class: 'control-label'
|
||||
.col-sm-10
|
||||
= text_field_tag :dir_name, params[:dir_name], placeholder: "Directory name", required: true, class: 'form-control'
|
||||
= render 'shared/commit_message_container', params: params, placeholder: ''
|
||||
- unless @project.empty_repo?
|
||||
.form-group
|
||||
= label_tag :branch_name, 'Branch', class: 'control-label'
|
||||
.col-sm-10
|
||||
= text_field_tag 'new_branch', @ref, class: "form-control"
|
||||
|
||||
= render 'shared/new_commit_form', placeholder: "Add new directory"
|
||||
|
||||
.form-group
|
||||
.col-sm-offset-2.col-sm-10
|
||||
= submit_tag "Create directory", class: 'btn btn-primary btn-create'
|
||||
= link_to "Cancel", '#', class: "btn btn-cancel", "data-dismiss" => "modal"
|
||||
|
||||
:javascript
|
||||
disableButtonIfAnyEmptyField($("#dir-create-form"), ".form-control", ".btn-create");
|
||||
disableButtonIfAnyEmptyField($(".js-create-dir-form"), ".form-control", ".btn-create");
|
||||
new NewCommitForm($('.js-create-dir-form'))
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
.modal-content
|
||||
.modal-header
|
||||
%a.close{href: "#", "data-dismiss" => "modal"} ×
|
||||
%h3.page-title Remove #{@blob.name}
|
||||
%p.light
|
||||
From branch
|
||||
%strong= @ref
|
||||
%h3.page-title Delete #{@blob.name}
|
||||
|
||||
.modal-body
|
||||
= form_tag namespace_project_blob_path(@project.namespace, @project, @id), method: :delete, class: 'form-horizontal js-requires-input' do
|
||||
= render 'shared/commit_message_container', params: params,
|
||||
placeholder: 'Removed this file because...'
|
||||
= form_tag namespace_project_blob_path(@project.namespace, @project, @id), method: :delete, class: 'form-horizontal js-replace-blob-form js-requires-input' do
|
||||
= render 'shared/new_commit_form', placeholder: "Delete #{@blob.name}"
|
||||
|
||||
.form-group
|
||||
.col-sm-offset-2.col-sm-10
|
||||
= button_tag 'Remove file', class: 'btn btn-remove btn-remove-file'
|
||||
= button_tag 'Delete file', class: 'btn btn-remove btn-remove-file'
|
||||
= link_to "Cancel", '#', class: "btn btn-cancel", "data-dismiss" => "modal"
|
||||
|
||||
:javascript
|
||||
new NewCommitForm($('.js-replace-blob-form'))
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%a.close{href: "#", "data-dismiss" => "modal"} ×
|
||||
%h3.page-title #{title}
|
||||
.modal-body
|
||||
= form_tag form_path, method: method, class: 'blob-file-upload-form-js form-horizontal' do
|
||||
= form_tag form_path, method: method, class: 'js-upload-blob-form form-horizontal' do
|
||||
.dropzone
|
||||
.dropzone-previews.blob-upload-dropzone-previews
|
||||
%p.dz-message.light
|
||||
|
@ -13,19 +13,15 @@
|
|||
= link_to 'click to upload', '#', class: "markdown-selector"
|
||||
%br
|
||||
.dropzone-alerts{class: "alert alert-danger data", style: "display:none"}
|
||||
= render 'shared/commit_message_container', params: params,
|
||||
placeholder: placeholder
|
||||
- unless @project.empty_repo?
|
||||
.form-group.branch
|
||||
= label_tag 'branch', class: 'control-label' do
|
||||
Branch
|
||||
.col-sm-10
|
||||
= text_field_tag 'new_branch', @ref, class: "form-control"
|
||||
|
||||
= render 'shared/new_commit_form', placeholder: placeholder
|
||||
|
||||
.form-group
|
||||
.col-sm-offset-2.col-sm-10
|
||||
= button_tag button_title, class: 'btn btn-small btn-primary btn-upload-file', id: 'submit-all'
|
||||
= link_to "Cancel", '#', class: "btn btn-cancel", "data-dismiss" => "modal"
|
||||
|
||||
:javascript
|
||||
disableButtonIfEmptyField($('.blob-file-upload-form-js').find('#commit_message'), '.btn-upload-file');
|
||||
new BlobFileDropzone($('.blob-file-upload-form-js'), '#{method}');
|
||||
disableButtonIfEmptyField($('.js-upload-blob-form').find('.js-commit-message'), '.btn-upload-file');
|
||||
new BlobFileDropzone($('.js-upload-blob-form'), '#{method}');
|
||||
new NewCommitForm($('.js-upload-blob-form'))
|
||||
|
|
|
@ -13,15 +13,9 @@
|
|||
%i.fa.fa-eye
|
||||
= editing_preview_title(@blob.name)
|
||||
|
||||
= form_tag(namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put, class: 'form-horizontal js-requires-input') do
|
||||
= form_tag(namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put, class: 'form-horizontal js-requires-input js-edit-blob-form') do
|
||||
= render 'projects/blob/editor', ref: @ref, path: @path, blob_data: @blob.data
|
||||
= render 'shared/commit_message_container', params: params, placeholder: "Update #{@blob.name}"
|
||||
|
||||
.form-group.branch
|
||||
= label_tag 'branch', class: 'control-label' do
|
||||
Branch
|
||||
.col-sm-10
|
||||
= text_field_tag 'new_branch', @ref, class: "form-control"
|
||||
= render 'shared/new_commit_form', placeholder: "Update #{@blob.name}"
|
||||
|
||||
= hidden_field_tag 'last_commit', @last_commit
|
||||
= hidden_field_tag 'content', '', id: "file-content"
|
||||
|
@ -30,3 +24,4 @@
|
|||
|
||||
:javascript
|
||||
blob = new EditBlob(gon.relative_url_root + "#{Gitlab::Application.config.assets.prefix}", "#{@blob.language.try(:ace_mode)}")
|
||||
new NewCommitForm($('.js-edit-blob-form'))
|
||||
|
|
|
@ -2,20 +2,13 @@
|
|||
= render "header_title"
|
||||
|
||||
.gray-content-block.top-block
|
||||
Create a new file
|
||||
%h3.page-title
|
||||
Create New File
|
||||
|
||||
.file-editor
|
||||
= form_tag(namespace_project_create_blob_path(@project.namespace, @project, @id), method: :post, class: 'form-horizontal form-new-file js-requires-input') do
|
||||
= form_tag(namespace_project_create_blob_path(@project.namespace, @project, @id), method: :post, class: 'form-horizontal js-new-blob-form js-requires-input') do
|
||||
= render 'projects/blob/editor', ref: @ref
|
||||
= render 'shared/commit_message_container', params: params,
|
||||
placeholder: 'Add new file'
|
||||
|
||||
- unless @project.empty_repo?
|
||||
.form-group.branch
|
||||
= label_tag 'branch', class: 'control-label' do
|
||||
Branch
|
||||
.col-sm-10
|
||||
= text_field_tag 'new_branch', @ref, class: "form-control js-quick-submit"
|
||||
= render 'shared/new_commit_form', placeholder: "Add new file"
|
||||
|
||||
= hidden_field_tag 'content', '', id: 'file-content'
|
||||
= render 'projects/commit_button', ref: @ref,
|
||||
|
@ -23,3 +16,4 @@
|
|||
|
||||
:javascript
|
||||
blob = new NewBlob(gon.relative_url_root + "#{Gitlab::Application.config.assets.prefix}", null)
|
||||
new NewCommitForm($('.js-new-blob-form'))
|
||||
|
|
|
@ -10,6 +10,4 @@
|
|||
= render 'projects/blob/remove'
|
||||
|
||||
- title = "Replace #{@blob.name}"
|
||||
= render 'projects/blob/upload', title: title, placeholder: title,
|
||||
button_title: 'Replace file', form_path: namespace_project_update_blob_path(@project.namespace, @project, @id),
|
||||
method: :put
|
||||
= render 'projects/blob/upload', title: title, placeholder: title, button_title: 'Replace file', form_path: namespace_project_update_blob_path(@project.namespace, @project, @id), method: :put
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
= render "projects/tree/readme", readme: tree.readme
|
||||
|
||||
- if allowed_tree_edit?
|
||||
= render 'projects/blob/upload', title: 'Upload', placeholder: 'Upload new file', button_title: 'Upload file', form_path: namespace_project_create_blob_path(@project.namespace, @project, @id), method: :post
|
||||
= render 'projects/blob/upload', title: 'Upload New File', placeholder: 'Upload new file', button_title: 'Upload file', form_path: namespace_project_create_blob_path(@project.namespace, @project, @id), method: :post
|
||||
= render 'projects/blob/new_dir'
|
||||
|
||||
:javascript
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
.form-group.commit_message-group
|
||||
= label_tag 'commit_message', class: 'control-label' do
|
||||
- nonce = SecureRandom.hex
|
||||
= label_tag "commit_message-#{nonce}", class: 'control-label' do
|
||||
Commit message
|
||||
.col-sm-10
|
||||
.commit-message-container
|
||||
.max-width-marker
|
||||
= text_area_tag 'commit_message',
|
||||
(params[:commit_message] || local_assigns[:text]),
|
||||
class: 'form-control js-quick-submit', placeholder: local_assigns[:placeholder],
|
||||
required: true, rows: (local_assigns[:rows] || 3)
|
||||
class: 'form-control js-commit-message js-quick-submit', placeholder: local_assigns[:placeholder],
|
||||
required: true, rows: (local_assigns[:rows] || 3),
|
||||
id: "commit_message-#{nonce}"
|
||||
- if local_assigns[:hint]
|
||||
%p.hint
|
||||
Try to keep the first line under 52 characters
|
||||
|
|
18
app/views/shared/_new_commit_form.html.haml
Normal file
18
app/views/shared/_new_commit_form.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
= render 'shared/commit_message_container', placeholder: placeholder
|
||||
|
||||
- unless @project.empty_repo?
|
||||
.form-group.branch
|
||||
= label_tag 'branch', class: 'control-label' do
|
||||
Branch
|
||||
.col-sm-10
|
||||
= text_field_tag 'new_branch', @new_branch || @ref, class: "form-control js-new-branch"
|
||||
|
||||
.form-group.js-create-merge-request-form-group
|
||||
.col-sm-offset-2.col-sm-10
|
||||
.checkbox
|
||||
- nonce = SecureRandom.hex
|
||||
= label_tag "create_merge_request-#{nonce}" do
|
||||
= check_box_tag 'create_merge_request', 1, true, class: 'js-create-merge-request', id: "create_merge_request-#{nonce}"
|
||||
Start a <strong>new merge request</strong> with this commit
|
||||
|
||||
= hidden_field_tag 'original_branch', @ref, class: 'js-original-branch'
|
|
@ -42,7 +42,7 @@ Feature: Project Source Browse Files
|
|||
And I fill the new branch name
|
||||
And I click on "Upload file"
|
||||
Then I can see the new text file
|
||||
And I am redirected to the uploaded file on new branch
|
||||
And I am redirected to the new merge request page
|
||||
And I can see the new commit message
|
||||
|
||||
@javascript
|
||||
|
@ -64,7 +64,7 @@ Feature: Project Source Browse Files
|
|||
And I fill the commit message
|
||||
And I fill the new branch name
|
||||
And I click on "Commit Changes"
|
||||
Then I am redirected to the new file on new branch
|
||||
Then I am redirected to the new merge request page
|
||||
And I should see its new content
|
||||
|
||||
@javascript
|
||||
|
@ -134,7 +134,7 @@ Feature: Project Source Browse Files
|
|||
And I fill the commit message
|
||||
And I fill the new branch name
|
||||
And I click on "Commit Changes"
|
||||
Then I am redirected to the ".gitignore" on new branch
|
||||
Then I am redirected to the new merge request page
|
||||
And I should see its new content
|
||||
|
||||
@javascript @wip
|
||||
|
@ -154,7 +154,7 @@ Feature: Project Source Browse Files
|
|||
And I fill the commit message
|
||||
And I fill the new branch name
|
||||
And I click on "Create directory"
|
||||
Then I am redirected to the new directory
|
||||
Then I am redirected to the new merge request page
|
||||
|
||||
@javascript
|
||||
Scenario: I attempt to create an existing directory
|
||||
|
@ -174,12 +174,12 @@ Feature: Project Source Browse Files
|
|||
Then I see diff
|
||||
|
||||
@javascript
|
||||
Scenario: I can remove file and commit
|
||||
Scenario: I can delete file and commit
|
||||
Given I click on ".gitignore" file in repo
|
||||
And I see the ".gitignore"
|
||||
And I click on "Remove"
|
||||
And I click on "Delete"
|
||||
And I fill the commit message
|
||||
And I click on "Remove file"
|
||||
And I click on "Delete file"
|
||||
Then I am redirected to the files URL
|
||||
And I don't see the ".gitignore"
|
||||
|
||||
|
|
|
@ -98,12 +98,12 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
|
|||
click_button 'Create directory'
|
||||
end
|
||||
|
||||
step 'I click on "Remove"' do
|
||||
click_button 'Remove'
|
||||
step 'I click on "Delete"' do
|
||||
click_button 'Delete'
|
||||
end
|
||||
|
||||
step 'I click on "Remove file"' do
|
||||
click_button 'Remove file'
|
||||
step 'I click on "Delete file"' do
|
||||
click_button 'Delete file'
|
||||
end
|
||||
|
||||
step 'I click on "Replace"' do
|
||||
|
@ -142,7 +142,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
|
|||
end
|
||||
|
||||
step 'I can see new file page' do
|
||||
expect(page).to have_content "new file"
|
||||
expect(page).to have_content "Create New File"
|
||||
expect(page).to have_content "Commit message"
|
||||
end
|
||||
|
||||
|
@ -225,10 +225,6 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
|
|||
expect(current_path).to eq(namespace_project_blob_path(@project.namespace, @project, 'master/.gitignore'))
|
||||
end
|
||||
|
||||
step 'I am redirected to the ".gitignore" on new branch' do
|
||||
expect(current_path).to eq(namespace_project_blob_path(@project.namespace, @project, 'new_branch_name/.gitignore'))
|
||||
end
|
||||
|
||||
step 'I am redirected to the permalink URL' do
|
||||
expect(current_path).to(
|
||||
eq(namespace_project_blob_path(@project.namespace, @project,
|
||||
|
@ -247,20 +243,8 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
|
|||
@project.namespace, @project, 'master/' + new_file_name_with_directory))
|
||||
end
|
||||
|
||||
step 'I am redirected to the new file on new branch' do
|
||||
expect(current_path).to eq(namespace_project_blob_path(
|
||||
@project.namespace, @project, 'new_branch_name/' + new_file_name))
|
||||
end
|
||||
|
||||
step 'I am redirected to the uploaded file on new branch' do
|
||||
expect(current_path).to eq(namespace_project_blob_path(
|
||||
@project.namespace, @project,
|
||||
'new_branch_name/' + File.basename(test_text_file)))
|
||||
end
|
||||
|
||||
step 'I am redirected to the new directory' do
|
||||
expect(current_path).to eq(namespace_project_tree_path(
|
||||
@project.namespace, @project, 'new_branch_name/' + new_dir_name))
|
||||
step 'I am redirected to the new merge request page' do
|
||||
expect(current_path).to eq(new_namespace_project_merge_request_path(@project.namespace, @project))
|
||||
end
|
||||
|
||||
step 'I am redirected to the root directory' do
|
||||
|
|
Loading…
Reference in a new issue