Merge branch '31276-fix-diffs-with-edit-forking-needs' into 'master'
Fix diffs with edit-forking needs Closes #31276 See merge request !10868
This commit is contained in:
commit
9d2ca3f52c
|
@ -5,6 +5,7 @@
|
|||
import Cookies from 'js-cookie';
|
||||
import './breakpoints';
|
||||
import './flash';
|
||||
import BlobForkSuggestion from './blob/blob_fork_suggestion';
|
||||
|
||||
/* eslint-disable max-len */
|
||||
// MergeRequestTabs
|
||||
|
@ -266,6 +267,16 @@ import './flash';
|
|||
|
||||
new gl.Diff();
|
||||
this.scrollToElement('#diffs');
|
||||
|
||||
$('.diff-file').each((i, el) => {
|
||||
new BlobForkSuggestion({
|
||||
openButtons: $(el).find('.js-edit-blob-link-fork-toggler'),
|
||||
forkButtons: $(el).find('.js-fork-suggestion-button'),
|
||||
cancelButtons: $(el).find('.js-cancel-fork-suggestion-button'),
|
||||
suggestionSections: $(el).find('.js-file-fork-suggestion-section'),
|
||||
actionTextPieces: $(el).find('.js-file-fork-suggestion-section-action'),
|
||||
});
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ module BlobHelper
|
|||
link_to 'Edit', edit_path(project, ref, path, options), class: "#{common_classes} btn-sm"
|
||||
elsif current_user && can?(current_user, :fork_project, project)
|
||||
continue_params = {
|
||||
to: edit_path,
|
||||
to: edit_path(project, ref, path, options),
|
||||
notice: edit_in_new_fork_notice,
|
||||
notice_now: edit_in_new_fork_notice_now
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
- if current_user
|
||||
.js-file-fork-suggestion-section.file-fork-suggestion.hidden
|
||||
%span.file-fork-suggestion-note
|
||||
You're not allowed to
|
||||
%span.js-file-fork-suggestion-section-action
|
||||
edit
|
||||
files in this project directly. Please fork this project,
|
||||
make your changes there, and submit a merge request.
|
||||
= link_to 'Fork', nil, method: :post, class: 'js-fork-suggestion-button btn btn-grouped btn-inverted btn-new'
|
||||
%button.js-cancel-fork-suggestion-button.btn.btn-grouped{ type: 'button' }
|
||||
Cancel
|
|
@ -39,14 +39,4 @@
|
|||
= replace_blob_link
|
||||
= delete_blob_link
|
||||
|
||||
- if current_user
|
||||
.js-file-fork-suggestion-section.file-fork-suggestion.hidden
|
||||
%span.file-fork-suggestion-note
|
||||
You're not allowed to
|
||||
%span.js-file-fork-suggestion-section-action
|
||||
edit
|
||||
files in this project directly. Please fork this project,
|
||||
make your changes there, and submit a merge request.
|
||||
= link_to 'Fork', nil, method: :post, class: 'js-fork-suggestion-button btn btn-grouped btn-inverted btn-new'
|
||||
%button.js-cancel-fork-suggestion-button.btn.btn-grouped{ type: 'button' }
|
||||
Cancel
|
||||
= render 'projects/fork_suggestion'
|
||||
|
|
|
@ -18,4 +18,6 @@
|
|||
= view_file_button(diff_commit.id, diff_file.new_path, project)
|
||||
= view_on_environment_button(diff_commit.id, diff_file.new_path, environment) if environment
|
||||
|
||||
= render 'projects/fork_suggestion'
|
||||
|
||||
= render 'projects/diffs/content', diff_file: diff_file, diff_commit: diff_commit, blob: blob, project: project
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'Diffs URL', js: true, feature: true do
|
||||
before do
|
||||
login_as :admin
|
||||
@merge_request = create(:merge_request)
|
||||
@project = @merge_request.source_project
|
||||
end
|
||||
include ApplicationHelper
|
||||
|
||||
let(:author_user) { create(:user) }
|
||||
let(:user) { create(:user) }
|
||||
let(:project) { create(:project, :public) }
|
||||
let(:forked_project) { Projects::ForkService.new(project, author_user).execute }
|
||||
let(:merge_request) { create(:merge_request_with_diffs, source_project: forked_project, target_project: project, author: author_user) }
|
||||
|
||||
context 'when visit with */* as accept header' do
|
||||
before(:each) do
|
||||
|
@ -13,9 +15,9 @@ feature 'Diffs URL', js: true, feature: true do
|
|||
end
|
||||
|
||||
it 'renders the notes' do
|
||||
create :note_on_merge_request, project: @project, noteable: @merge_request, note: 'Rebasing with master'
|
||||
create :note_on_merge_request, project: project, noteable: merge_request, note: 'Rebasing with master'
|
||||
|
||||
visit diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
|
||||
visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
|
||||
|
||||
# Load notes and diff through AJAX
|
||||
expect(page).to have_css('.note-text', visible: false, text: 'Rebasing with master')
|
||||
|
@ -28,11 +30,38 @@ feature 'Diffs URL', js: true, feature: true do
|
|||
allow_any_instance_of(MergeRequestDiff).to receive(:overflow?).and_return(true)
|
||||
allow(Commit).to receive(:max_diff_options).and_return(max_files: 20, max_lines: 20)
|
||||
|
||||
visit diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)
|
||||
visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
|
||||
|
||||
page.within('.alert') do
|
||||
expect(page).to have_text("Too many changes to show. Plain diff Email patch To preserve
|
||||
performance only 3 of 3+ files are displayed.")
|
||||
performance only 3 of 3 files are displayed.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when editing file' do
|
||||
let(:changelog_id) { hexdigest("CHANGELOG") }
|
||||
|
||||
context 'as author' do
|
||||
it 'shows direct edit link' do
|
||||
login_as(author_user)
|
||||
visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
|
||||
|
||||
# Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax
|
||||
expect(page).to have_selector("[id=\"#{changelog_id}\"] a.js-edit-blob")
|
||||
end
|
||||
end
|
||||
|
||||
context 'as user who needs to fork' do
|
||||
it 'shows fork/cancel confirmation' do
|
||||
login_as(user)
|
||||
visit diffs_namespace_project_merge_request_path(project.namespace, project, merge_request)
|
||||
|
||||
# Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax
|
||||
find("[id=\"#{changelog_id}\"] .js-edit-blob").click
|
||||
|
||||
expect(page).to have_selector('.js-fork-suggestion-button', count: 1)
|
||||
expect(page).to have_selector('.js-cancel-fork-suggestion-button', count: 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue