-
{{ $options.i18n.cancelButtonText }}
+
{{ $options.i18n.cancelButtonText }}
{{ $options.i18n.commitButtonText }}
@@ -74,6 +85,7 @@ export default {
:can-push-to-branch="canPushToBranch"
:is-using-lfs="isUsingLfs"
:file-content="fileContent"
+ :branch-allows-collaboration="branchAllowsCollaboration"
method="put"
is-edit
/>
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index a5ccccaf226be9..db16ec0b53abb4 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -303,17 +303,18 @@ def vue_blob_app_data(project, blob, ref)
}
end
- def edit_blob_app_data(project)
+ def edit_blob_app_data(project, id, blob, ref)
{
- update_path: project_update_blob_path(@project, @id),
- cancel_path: project_blob_path(@project, @id),
- original_branch: @ref,
- target_branch: @ref,
+ update_path: project_update_blob_path(project, id),
+ cancel_path: project_blob_path(project, id),
+ original_branch: ref,
+ target_branch: ref,
can_push_code: can?(current_user, :push_code, project).to_s,
- can_push_to_branch: @project.present(current_user: current_user).can_current_user_push_to_branch?(@ref).to_s,
+ can_push_to_branch: project.present(current_user: current_user).can_current_user_push_to_branch?(ref).to_s,
empty_repo: project.empty_repo?.to_s,
- is_using_lfs: @blob.stored_externally?.to_s,
- blob_name: @blob.name
+ is_using_lfs: blob.stored_externally?.to_s,
+ blob_name: blob.name,
+ branch_allows_collaboration: project.branch_allows_collaboration?(current_user, ref).to_s
}
end
end
diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml
index acdab3aa798994..6aea2c2afe560e 100644
--- a/app/views/projects/blob/edit.html.haml
+++ b/app/views/projects/blob/edit.html.haml
@@ -19,7 +19,7 @@
- blob_url = project_blob_path(@project, @id)
= _('Someone edited the file the same time you did. Please check out %{link_start}the file %{icon}%{link_end} and make sure your changes will not unintentionally remove theirs.').html_safe % { link_start: blob_link_start % { url: blob_url }, link_end: link_end , icon: external_link_icon }
-.js-blob-edit-header{ data: edit_blob_app_data(@project) }
+.js-blob-edit-header{ data: edit_blob_app_data(@project, @id, @blob, @ref) }
.file-editor
= gl_tabs_nav({ class: 'js-edit-mode nav-links gl-border-0'}) do
diff --git a/spec/features/merge_request/maintainer_edits_fork_spec.rb b/spec/features/merge_request/maintainer_edits_fork_spec.rb
index 8618dca5873dbf..f50af8dace9da4 100644
--- a/spec/features/merge_request/maintainer_edits_fork_spec.rb
+++ b/spec/features/merge_request/maintainer_edits_fork_spec.rb
@@ -40,6 +40,8 @@
end
it 'mentions commits will go to the source branch' do
+ click_button 'Commit changes'
+
expect(page).to have_content('Your changes can be committed to fix because a merge request is open.')
end
@@ -48,6 +50,11 @@
editor_set_value(content)
click_button 'Commit changes'
+
+ within_testid('commit-change-modal') do
+ click_button 'Commit changes'
+ end
+
wait_for_requests
expect(page).to have_content('Your changes have been committed successfully')
diff --git a/spec/features/projects/blobs/edit_spec.rb b/spec/features/projects/blobs/edit_spec.rb
index d8b1971007b8a5..afde4b5fd0396e 100644
--- a/spec/features/projects/blobs/edit_spec.rb
+++ b/spec/features/projects/blobs/edit_spec.rb
@@ -35,7 +35,11 @@ def edit_and_commit(commit_changes: true, is_diff: false)
fill_editor(content: "class NextFeature#{object_id}\\nend\\n")
if commit_changes
- click_button 'Commit changes'
+ click_button('Commit changes')
+
+ within_testid('commit-change-modal') do
+ click_button('Commit changes')
+ end
end
end
@@ -206,18 +210,22 @@ def has_toolbar_buttons
it 'shows blob editor with same branch' do
expect(page).to have_current_path(project_edit_blob_path(project, tree_join(branch, file_path)))
- expect(find('.js-branch-name').value).to eq(branch)
+
+ click_button('Commit changes')
+
+ expect(page).to have_selector('code', text: branch)
end
end
context 'with protected branch' do
- it 'shows blob editor with patch branch' do
+ it 'shows blob editor with option to create MR' do
freeze_time do
visit project_edit_blob_path(project, tree_join(protected_branch, file_path))
- epoch = Time.zone.now.strftime('%s%L').last(5)
+ click_button('Commit changes')
- expect(find('.js-branch-name').value).to eq "#{user.username}-protected-branch-patch-#{epoch}"
+ expect(page).to have_checked_field _('Create a merge request for this change')
+ expect(page).to have_field _('Commit to a new branch')
end
end
end
@@ -234,7 +242,10 @@ def has_toolbar_buttons
it 'shows blob editor with same branch' do
expect(page).to have_current_path(project_edit_blob_path(project, tree_join(branch, file_path)))
- expect(find('.js-branch-name').value).to eq(branch)
+
+ click_button('Commit changes')
+
+ expect(page).to have_selector('code', text: branch)
end
end
end
diff --git a/spec/features/projects/files/editing_a_file_spec.rb b/spec/features/projects/files/editing_a_file_spec.rb
index 39e75f2cee6629..77c5c9b566ddd0 100644
--- a/spec/features/projects/files/editing_a_file_spec.rb
+++ b/spec/features/projects/files/editing_a_file_spec.rb
@@ -28,6 +28,10 @@
click_button 'Commit changes'
+ within_testid('commit-change-modal') do
+ click_button('Commit changes')
+ end
+
expect(page).to have_content 'Someone edited the file the same time you did.'
end
end
@@ -52,6 +56,10 @@
it 'renders an error message' do
click_button 'Commit changes'
+ within_testid('commit-change-modal') do
+ click_button('Commit changes')
+ end
+
expect(page).to have_content(
%(Error: Can't edit this file. The fork and upstream project have diverged. Edit the file on the fork)
)
diff --git a/spec/features/projects/files/user_edits_files_spec.rb b/spec/features/projects/files/user_edits_files_spec.rb
index 81cebde16ca4a3..2b6e3a7ab753b0 100644
--- a/spec/features/projects/files/user_edits_files_spec.rb
+++ b/spec/features/projects/files/user_edits_files_spec.rb
@@ -81,9 +81,13 @@
find('.file-editor', match: :first)
editor_set_value('*.rbca')
- fill_in(:commit_message, with: 'New commit message', visible: true)
click_button('Commit changes')
+ within_testid('commit-change-modal') do
+ fill_in(:commit_message, with: 'New commit message', visible: true)
+ click_button('Commit changes')
+ end
+
expect(page).to have_current_path(project_blob_path(project, 'master/.gitignore'), ignore_query: true)
wait_for_requests
@@ -97,9 +101,13 @@
find('.file-editor', match: :first)
editor_set_value('*.rbca')
- fill_in(:commit_message, with: 'New commit message', visible: true)
click_button('Commit changes')
+ within_testid('commit-change-modal') do
+ fill_in(:commit_message, with: 'New commit message', visible: true)
+ click_button('Commit changes')
+ end
+
expect(page).to have_current_path(project_blob_path(project, 'master/.gitignore'), ignore_query: true)
wait_for_requests
@@ -117,10 +125,14 @@
find('.file-editor', match: :first)
editor_set_value('*.rbca')
- fill_in(:commit_message, with: 'New commit message', visible: true)
- fill_in(:branch_name, with: 'new_branch_name', visible: true)
click_button('Commit changes')
+ within_testid('commit-change-modal') do
+ fill_in(:commit_message, with: 'New commit message', visible: true)
+ choose(option: true)
+ fill_in(:branch_name, with: 'new_branch_name', visible: true)
+ click_button('Commit changes')
+ end
expect(page).to have_current_path(project_new_merge_request_path(project), ignore_query: true)
click_link('Changes')
@@ -206,9 +218,13 @@ def expect_fork_status
find('.file-editor', match: :first)
editor_set_value('*.rbca')
- fill_in(:commit_message, with: 'New commit message', visible: true)
click_button('Commit changes')
+ within_testid('commit-change-modal') do
+ fill_in(:commit_message, with: 'New commit message', visible: true)
+ click_button('Commit changes')
+ end
+
fork = user.fork_of(project2.reload)
expect(page).to have_current_path(project_new_merge_request_path(fork), ignore_query: true)
@@ -233,9 +249,13 @@ def expect_fork_status
expect(page).not_to have_link('Fork')
editor_set_value('*.rbca')
- fill_in(:commit_message, with: 'Another commit', visible: true)
click_button('Commit changes')
+ within_testid('commit-change-modal') do
+ fill_in(:commit_message, with: 'Another commit', visible: true)
+ click_button('Commit changes')
+ end
+
fork = user.fork_of(project2)
expect(page).to have_current_path(project_new_merge_request_path(fork), ignore_query: true)
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index 96a06f76cf148b..41277e36e9cab6 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -455,8 +455,9 @@
allow(project_presenter).to receive(:can_current_user_push_to_branch?).with(ref).and_return(true)
allow(project).to receive(:empty_repo?).and_return(false)
allow(blob).to receive(:stored_externally?).and_return(false)
+ allow(project).to receive(:branch_allows_collaboration?).with(user, ref).and_return(false)
- expect(helper.edit_blob_app_data(project)).to include({
+ expect(helper.edit_blob_app_data(project, id, blob, ref)).to include({
update_path: project_update_blob_path(project, id),
cancel_path: project_blob_path(project, id),
original_branch: ref,
@@ -465,7 +466,8 @@
can_push_to_branch: 'true',
empty_repo: 'false',
is_using_lfs: 'false',
- blob_name: blob.name
+ blob_name: blob.name,
+ branch_allows_collaboration: 'false'
})
end
@@ -473,7 +475,7 @@
it 'returns false for push permissions' do
allow(helper).to receive(:can?).with(user, :push_code, project).and_return(false)
- expect(helper.edit_blob_app_data(project)).to include(
+ expect(helper.edit_blob_app_data(project, id, blob, ref)).to include(
can_push_code: 'false'
)
end
@@ -486,7 +488,7 @@
allow(project).to receive(:present).and_return(project_presenter)
allow(project_presenter).to receive(:can_current_user_push_to_branch?).with(ref).and_return(false)
- expect(helper.edit_blob_app_data(project)).to include(
+ expect(helper.edit_blob_app_data(project, id, blob, ref)).to include(
can_push_to_branch: 'false'
)
end
@@ -496,7 +498,7 @@
it 'returns true for empty_repo' do
allow(project).to receive(:empty_repo?).and_return(true)
- expect(helper.edit_blob_app_data(project)).to include(
+ expect(helper.edit_blob_app_data(project, id, blob, ref)).to include(
empty_repo: 'true'
)
end
@@ -506,11 +508,21 @@
it 'returns true for is_using_lfs' do
allow(blob).to receive(:stored_externally?).and_return(true)
- expect(helper.edit_blob_app_data(project)).to include(
+ expect(helper.edit_blob_app_data(project, id, blob, ref)).to include(
is_using_lfs: 'true'
)
end
end
+
+ context 'branch collaboration' do
+ it 'returns true when branch allows collaboration' do
+ allow(project).to receive(:branch_allows_collaboration?).with(user, ref).and_return(true)
+
+ expect(helper.edit_blob_app_data(project, id, blob, ref)).to include(
+ branch_allows_collaboration: 'true'
+ )
+ end
+ end
end
describe "#copy_blob_source_button" do
--
GitLab
From cec3c477630a44fae2ecf2c81267efd68d8f0c26 Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Tue, 5 Nov 2024 10:33:06 -0500
Subject: [PATCH 04/16] Address code reviews comments:
- Clean up styling
- Add supports for small screen
- Add supports for loading state
- Fix broken jest tests
- Add forgotten translation strings
---
.../javascripts/repository/pages/blob_edit_header.vue | 8 ++++----
app/views/projects/blob/edit.html.haml | 9 +++++++++
locale/gitlab.pot | 3 +++
.../repository/components/commit_changes_modal_spec.js | 2 +-
spec/frontend/repository/pages/blob_edit_header_spec.js | 2 ++
5 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/app/assets/javascripts/repository/pages/blob_edit_header.vue b/app/assets/javascripts/repository/pages/blob_edit_header.vue
index 57eadcb3358cda..d28c994365ad26 100644
--- a/app/assets/javascripts/repository/pages/blob_edit_header.vue
+++ b/app/assets/javascripts/repository/pages/blob_edit_header.vue
@@ -57,11 +57,11 @@ export default {
-
-
+
+
{{ $options.i18n.headerText }}
-
+
{{ $options.i18n.cancelButtonText }}
-
+
{{ $options.i18n.commitButtonText }}
diff --git a/app/views/projects/blob/edit.html.haml b/app/views/projects/blob/edit.html.haml
index 6aea2c2afe560e..d6b825621e7ab9 100644
--- a/app/views/projects/blob/edit.html.haml
+++ b/app/views/projects/blob/edit.html.haml
@@ -19,7 +19,16 @@
- blob_url = project_blob_path(@project, @id)
= _('Someone edited the file the same time you did. Please check out %{link_start}the file %{icon}%{link_end} and make sure your changes will not unintentionally remove theirs.').html_safe % { link_start: blob_link_start % { url: blob_url }, link_end: link_end , icon: external_link_icon }
+
.js-blob-edit-header{ data: edit_blob_app_data(@project, @id, @blob, @ref) }
+ .gl-mb-4.gl-mt-5.gl-items-center.gl-justify-between.md:gl-flex.lg:gl-my-5
+ %h1{ class: 'md:!gl-mb-0 gl-heading-1 gl-inline-block' }
+ = _('Edit file')
+ .gl-flex.gl-gap-3
+ = render Pajamas::ButtonComponent.new do
+ = _('Cancel')
+ = render Pajamas::ButtonComponent.new(variant: :confirm) do
+ = _('Commit changes')
.file-editor
= gl_tabs_nav({ class: 'js-edit-mode nav-links gl-border-0'}) do
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 42b14a7ab30c4e..92edf142ae1a39 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -64398,6 +64398,9 @@ msgstr ""
msgid "Your browser doesn't support WebAuthn. Please use a supported browser, e.g. Chrome (67+) or Firefox (60+)."
msgstr ""
+msgid "Your changes can be committed to %{branchName} because a merge request is open."
+msgstr ""
+
msgid "Your changes can be committed to %{branch_name} because a merge request is open."
msgstr ""
diff --git a/spec/frontend/repository/components/commit_changes_modal_spec.js b/spec/frontend/repository/components/commit_changes_modal_spec.js
index a48d07f105aff7..3988fad798a6da 100644
--- a/spec/frontend/repository/components/commit_changes_modal_spec.js
+++ b/spec/frontend/repository/components/commit_changes_modal_spec.js
@@ -93,7 +93,7 @@ describe('CommitChangesModal', () => {
expect(findModal().text()).toContain(secondaryLfsText);
});
- it('hides the LFS content if the continue button is clicked', async () => {
+ it('hides the LFS content when the continue button is clicked', async () => {
findModal().vm.$emit('primary', { preventDefault: jest.fn() });
await nextTick();
diff --git a/spec/frontend/repository/pages/blob_edit_header_spec.js b/spec/frontend/repository/pages/blob_edit_header_spec.js
index b9571ae696ef9f..8a42d6401c33b0 100644
--- a/spec/frontend/repository/pages/blob_edit_header_spec.js
+++ b/spec/frontend/repository/pages/blob_edit_header_spec.js
@@ -24,6 +24,7 @@ describe('BlobEditHeader', () => {
canPushToBranch: true,
emptyRepo: false,
isUsingLfs: false,
+ branchAllowsCollaboration: false,
},
stubs: {
CommitChangesModal: stubComponent(CommitChangesModal, {
@@ -69,6 +70,7 @@ describe('BlobEditHeader', () => {
originalBranch: 'main',
targetBranch: 'feature',
isEdit: true,
+ branchAllowsCollaboration: false,
});
});
});
--
GitLab
From a29ef2265696cb6a283a1dd91bfd1e46a449586d Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Tue, 5 Nov 2024 11:46:55 -0500
Subject: [PATCH 05/16] Add last_commit_sha
---
app/assets/javascripts/blob_edit/blob_edit_header.js | 2 ++
.../repository/components/commit_changes_modal.vue | 6 ++++++
.../javascripts/repository/pages/blob_edit_header.vue | 2 ++
app/helpers/blob_helper.rb | 3 ++-
spec/features/projects/files/editing_a_file_spec.rb | 2 +-
5 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/app/assets/javascripts/blob_edit/blob_edit_header.js b/app/assets/javascripts/blob_edit/blob_edit_header.js
index 129006b604aa29..ea2891a191187f 100644
--- a/app/assets/javascripts/blob_edit/blob_edit_header.js
+++ b/app/assets/javascripts/blob_edit/blob_edit_header.js
@@ -20,6 +20,7 @@ export default function initBlobEditHeader(editor) {
isUsingLfs,
blobName,
branchAllowsCollaboration,
+ lastCommitSha,
} = el.dataset;
return new Vue({
@@ -31,6 +32,7 @@ export default function initBlobEditHeader(editor) {
originalBranch,
targetBranch,
blobName,
+ lastCommitSha,
emptyRepo: parseBoolean(emptyRepo),
canPushCode: parseBoolean(canPushCode),
canPushToBranch: parseBoolean(canPushToBranch),
diff --git a/app/assets/javascripts/repository/components/commit_changes_modal.vue b/app/assets/javascripts/repository/components/commit_changes_modal.vue
index f1e61c911f0474..1738985714a966 100644
--- a/app/assets/javascripts/repository/components/commit_changes_modal.vue
+++ b/app/assets/javascripts/repository/components/commit_changes_modal.vue
@@ -124,6 +124,11 @@ export default {
required: false,
default: false,
},
+ lastCommitSha: {
+ type: String,
+ required: false,
+ default: '',
+ },
},
data() {
const form = {
@@ -292,6 +297,7 @@ export default {
+
diff --git a/app/assets/javascripts/repository/pages/blob_edit_header.vue b/app/assets/javascripts/repository/pages/blob_edit_header.vue
index d28c994365ad26..b8333406057a81 100644
--- a/app/assets/javascripts/repository/pages/blob_edit_header.vue
+++ b/app/assets/javascripts/repository/pages/blob_edit_header.vue
@@ -23,6 +23,7 @@ export default {
'emptyRepo',
'isUsingLfs',
'branchAllowsCollaboration',
+ 'lastCommitSha',
],
data() {
return {
@@ -86,6 +87,7 @@ export default {
:is-using-lfs="isUsingLfs"
:file-content="fileContent"
:branch-allows-collaboration="branchAllowsCollaboration"
+ :last-commit-sha="lastCommitSha"
method="put"
is-edit
/>
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index db16ec0b53abb4..a0b8ea06618ad4 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -314,7 +314,8 @@ def edit_blob_app_data(project, id, blob, ref)
empty_repo: project.empty_repo?.to_s,
is_using_lfs: blob.stored_externally?.to_s,
blob_name: blob.name,
- branch_allows_collaboration: project.branch_allows_collaboration?(current_user, ref).to_s
+ branch_allows_collaboration: project.branch_allows_collaboration?(current_user, ref).to_s,
+ last_commit_sha: @last_commit_sha
}
end
end
diff --git a/spec/features/projects/files/editing_a_file_spec.rb b/spec/features/projects/files/editing_a_file_spec.rb
index 77c5c9b566ddd0..9f3636405e2e08 100644
--- a/spec/features/projects/files/editing_a_file_spec.rb
+++ b/spec/features/projects/files/editing_a_file_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe 'Projects > Files > User wants to edit a file', feature_category: :source_code_management do
+RSpec.describe 'Projects > Files > User wants to edit a file', :js, feature_category: :source_code_management do
include ProjectForksHelper
let(:project) { create(:project, :repository, :public) }
let(:user) { project.first_owner }
--
GitLab
From cd087eae841ffb8973dc6a2e78264589f895ec2d Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Tue, 5 Nov 2024 12:42:04 -0500
Subject: [PATCH 06/16] Add fromMergeRequestIid
---
.../components/commit_changes_modal.vue | 5 ++
.../components/commit_changes_modal_spec.js | 52 +++++++++++++------
2 files changed, 41 insertions(+), 16 deletions(-)
diff --git a/app/assets/javascripts/repository/components/commit_changes_modal.vue b/app/assets/javascripts/repository/components/commit_changes_modal.vue
index 1738985714a966..9d59171a58cbf4 100644
--- a/app/assets/javascripts/repository/components/commit_changes_modal.vue
+++ b/app/assets/javascripts/repository/components/commit_changes_modal.vue
@@ -208,6 +208,10 @@ export default {
showForm() {
return !this.isUsingLfs || (this.isUsingLfs && this.lfsWarningDismissed) || this.isEdit;
},
+ fromMergeRequestIid() {
+ const urlParams = new URLSearchParams(window.location.search);
+ return urlParams.get('from_merge_request_iid') || '';
+ },
},
watch: {
createNewBranch: {
@@ -298,6 +302,7 @@ export default {
+
diff --git a/spec/frontend/repository/components/commit_changes_modal_spec.js b/spec/frontend/repository/components/commit_changes_modal_spec.js
index 3988fad798a6da..e9826d3d1890e4 100644
--- a/spec/frontend/repository/components/commit_changes_modal_spec.js
+++ b/spec/frontend/repository/components/commit_changes_modal_spec.js
@@ -12,6 +12,7 @@ import { mount } from '@vue/test-utils';
import { nextTick } from 'vue';
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
import { RENDER_ALL_SLOTS_TEMPLATE, stubComponent } from 'helpers/stub_component';
+import setWindowLocation from 'helpers/set_window_location_helper';
import CommitChangesModal from '~/repository/components/commit_changes_modal.vue';
import { sprintf } from '~/locale';
@@ -183,30 +184,49 @@ describe('CommitChangesModal', () => {
});
it.each`
- input | value | emptyRepo | canPushCode | canPushToBranch | method | fileContent | exist
- ${'authenticity_token'} | ${'mock-csrf-token'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${true}
- ${'authenticity_token'} | ${'mock-csrf-token'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${true}
- ${'_method'} | ${'delete'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${true}
- ${'_method'} | ${'delete'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${true}
- ${'_method'} | ${'put'} | ${false} | ${true} | ${true} | ${'put'} | ${''} | ${true}
- ${'_method'} | ${'put'} | ${true} | ${false} | ${true} | ${'put'} | ${''} | ${true}
- ${'original_branch'} | ${initialProps.originalBranch} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${true}
- ${'original_branch'} | ${undefined} | ${true} | ${true} | ${true} | ${'delete'} | ${''} | ${false}
- ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${true}
- ${'create_merge_request'} | ${'1'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${true}
- ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${false} | ${'delete'} | ${''} | ${true}
- ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${true}
- ${'create_merge_request'} | ${undefined} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${false}
- ${'content'} | ${'some new content'} | ${false} | ${false} | ${true} | ${'put'} | ${'some new content'} | ${true}
+ input | value | emptyRepo | canPushCode | canPushToBranch | method | fileContent | lastCommitSha | fromMergeRequestIid | exist
+ ${'authenticity_token'} | ${'mock-csrf-token'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'authenticity_token'} | ${'mock-csrf-token'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'_method'} | ${'delete'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'_method'} | ${'delete'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'_method'} | ${'put'} | ${false} | ${true} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${true}
+ ${'_method'} | ${'put'} | ${true} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${true}
+ ${'original_branch'} | ${initialProps.originalBranch} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'original_branch'} | ${undefined} | ${true} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${false}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${false} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
+ ${'create_merge_request'} | ${undefined} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${false}
+ ${'content'} | ${'some new content'} | ${false} | ${false} | ${true} | ${'put'} | ${'some new content'} | ${''} | ${''} | ${true}
+ ${'last_commit_sha'} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${''} | ${true}
+ ${'from_merge_request_iid'} | ${'17'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${'17'} | ${true}
`(
'passes $input as a hidden input with the correct value',
- ({ input, value, emptyRepo, canPushCode, canPushToBranch, exist, method, fileContent }) => {
+ ({
+ input,
+ value,
+ emptyRepo,
+ canPushCode,
+ canPushToBranch,
+ exist,
+ method,
+ fileContent,
+ lastCommitSha,
+ fromMergeRequestIid,
+ }) => {
+ if (fromMergeRequestIid) {
+ setWindowLocation(
+ `https://gitlab.test/foo?from_merge_request_iid=${fromMergeRequestIid}`,
+ );
+ }
createComponent({
emptyRepo,
canPushCode,
canPushToBranch,
method,
fileContent,
+ lastCommitSha,
});
const inputMethod = findForm().find(`input[name="${input}"]`);
--
GitLab
From afb4824da952051db3e66f979bd51e0f4822fe2e Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Tue, 5 Nov 2024 14:32:34 -0500
Subject: [PATCH 07/16] Fix jest test
---
spec/frontend/repository/pages/blob_edit_header_spec.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/spec/frontend/repository/pages/blob_edit_header_spec.js b/spec/frontend/repository/pages/blob_edit_header_spec.js
index 8a42d6401c33b0..a717e9bca0b1d2 100644
--- a/spec/frontend/repository/pages/blob_edit_header_spec.js
+++ b/spec/frontend/repository/pages/blob_edit_header_spec.js
@@ -25,6 +25,7 @@ describe('BlobEditHeader', () => {
emptyRepo: false,
isUsingLfs: false,
branchAllowsCollaboration: false,
+ lastCommitSha: '782426692977b2cedb4452ee6501a404410f9b00',
},
stubs: {
CommitChangesModal: stubComponent(CommitChangesModal, {
@@ -71,6 +72,7 @@ describe('BlobEditHeader', () => {
targetBranch: 'feature',
isEdit: true,
branchAllowsCollaboration: false,
+ lastCommitSha: '782426692977b2cedb4452ee6501a404410f9b00',
});
});
});
--
GitLab
From 681dcf890dd395be282f7d136a7658f70dedc13f Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Tue, 5 Nov 2024 15:38:41 -0500
Subject: [PATCH 08/16] Fix QA tests
---
.../components/commit_changes_modal.vue | 1 +
qa/qa/page/file/shared/editor.rb | 18 ++++++++++++++++++
.../repository/file/edit_file_via_web_spec.rb | 3 ++-
.../user/user_inherited_access_spec.rb | 4 ++++
4 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/app/assets/javascripts/repository/components/commit_changes_modal.vue b/app/assets/javascripts/repository/components/commit_changes_modal.vue
index 9d59171a58cbf4..92c809dfad4076 100644
--- a/app/assets/javascripts/repository/components/commit_changes_modal.vue
+++ b/app/assets/javascripts/repository/components/commit_changes_modal.vue
@@ -162,6 +162,7 @@ export default {
variant: 'confirm',
loading: this.loading,
disabled: this.loading || !this.form.state,
+ 'data-testid': 'commit-change-modal-commit-button',
},
};
diff --git a/qa/qa/page/file/shared/editor.rb b/qa/qa/page/file/shared/editor.rb
index 86d044bb4fa117..5eb55411ac6788 100644
--- a/qa/qa/page/file/shared/editor.rb
+++ b/qa/qa/page/file/shared/editor.rb
@@ -13,6 +13,14 @@ def self.included(base)
base.view 'app/views/projects/blob/_editor.html.haml' do
element 'source-editor-preview-container'
end
+
+ base.view 'app/assets/javascripts/repository/components/commit_changes_modal.vue' do
+ element 'commit-change-modal'
+ end
+
+ base.view 'app/assets/javascripts/repository/components/commit_changes_modal.vue' do
+ element 'commit-change-modal-commit-button'
+ end
end
def add_content(content)
@@ -27,6 +35,16 @@ def remove_content
end
end
+ def click_commit_changes
+ click_on 'Commit changes'
+ end
+
+ def commit_changes_through_modal
+ within_element 'commit-change-modal' do
+ click_element('commit-change-modal-commit-button')
+ end
+ end
+
private
def text_area
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb
index e119b8e2e62849..4ff5c65cb49093 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb
@@ -19,8 +19,9 @@ module QA
Page::File::Form.perform do |file|
file.remove_content
file.add_content(updated_file_content)
+ file.click_commit_changes
file.add_commit_message(commit_message_for_update)
- file.commit_changes
+ file.commit_changes_through_modal
end
Page::File::Show.perform do |file|
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
index 3d9a98048376a1..2f1d24c5660d9d 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
@@ -41,6 +41,8 @@ module QA
Page::File::Show.perform(&:click_edit)
+ Page::File::Show.perform(&:click_commit_changes)
+
Page::File::Form.perform do |file_form|
expect(file_form).to have_element('data-testid': 'commit-button')
end
@@ -75,6 +77,8 @@ module QA
Page::File::Show.perform(&:click_edit)
+ Page::File::Show.perform(&:click_commit_changes)
+
expect(page).to have_text("You can’t edit files directly in this project.")
end
end
--
GitLab
From 5659264a2470e7350c1924512c5617cbb306d191 Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Wed, 6 Nov 2024 12:08:09 -0500
Subject: [PATCH 09/16] Fix tests and remove docs changes
---
doc/user/project/repository/web_editor.md | 17 +++--------------
qa/qa/page/file/show.rb | 10 +++++++++-
.../user/user_inherited_access_spec.rb | 12 ++++--------
3 files changed, 16 insertions(+), 23 deletions(-)
diff --git a/doc/user/project/repository/web_editor.md b/doc/user/project/repository/web_editor.md
index 98d702d76bdfaf..3bdd677d265f89 100644
--- a/doc/user/project/repository/web_editor.md
+++ b/doc/user/project/repository/web_editor.md
@@ -54,21 +54,10 @@ To edit a text file in the Web Editor:
1. On the left sidebar, select **Search or go to** and find your project.
1. Go to the file you want to edit.
1. Select **Edit > Edit single file**.
+1. Complete the fields.
+ To create a merge request with your changes, enter a branch name
+ that's not your repository's [default branch](branches/default.md).
1. Select **Commit changes**.
-1. In **Commit message**, enter a reason for the commit.
-1. Choose between the following options:
- - To edit a file from the prefilled target branch, select **Commit changes**.
- - To edit a file from a new branch and commit changes:
- 1. Select **Commit to a new branch**.
- 1. Enter a branch name.
- 1. Ensure the **Create a merge request for this change** checkbox is cleared.
- 1. Select **Commit changes**.
- - To edit a file from a new branch, commit changes, and create a merge request:
- 1. In **Target branch**, enter a branch name.
- 1. Select **Commit to a new branch**.
- 1. Enter a branch name.
- 1. Ensure the **Create a merge request for this change** checkbox is selected.
- 1. Select **Commit changes**.
### Preview Markdown
diff --git a/qa/qa/page/file/show.rb b/qa/qa/page/file/show.rb
index 4637cedad418a5..63db1ec5bcece0 100644
--- a/qa/qa/page/file/show.rb
+++ b/qa/qa/page/file/show.rb
@@ -18,6 +18,10 @@ class Show < Page::Base
element 'webide-menu-item', ':data-testid="`${action.key}-menu-item`"' # rubocop:disable QA/ElementWithPattern
end
+ view 'app/assets/javascripts/repository/pages/blob_edit_header.vue' do
+ element 'commit-btn'
+ end
+
def click_edit
click_element('action-dropdown')
click_element('edit-menu-item')
@@ -36,7 +40,11 @@ def explain_code
end
def click_commit_changes
- click_on 'Commit changes'
+ click_element('commit-btn')
+ end
+
+ def has_modal_commit_button?
+ has_element?('commit-change-modal-commit-button')
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
index 2f1d24c5660d9d..9c73c3e960c6be 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
@@ -39,12 +39,10 @@ module QA
project.click_file('README.md')
end
- Page::File::Show.perform(&:click_edit)
-
- Page::File::Show.perform(&:click_commit_changes)
-
- Page::File::Form.perform do |file_form|
- expect(file_form).to have_element('data-testid': 'commit-button')
+ Page::File::Show.perform do |file|
+ file.click_edit
+ file.click_commit_changes
+ expect(file).to have_modal_commit_button
end
end
end
@@ -77,8 +75,6 @@ module QA
Page::File::Show.perform(&:click_edit)
- Page::File::Show.perform(&:click_commit_changes)
-
expect(page).to have_text("You can’t edit files directly in this project.")
end
end
--
GitLab
From 01229b75a65be9c4f950a50a3cdfdc87fb744119 Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Wed, 6 Nov 2024 13:38:18 -0500
Subject: [PATCH 10/16] Moar failures
---
qa/qa/page/file/show.rb | 6 ++++++
.../3_create/repository/file/delete_file_via_web_spec.rb | 2 +-
.../3_create/source_editor/source_editor_toolbar_spec.rb | 3 ++-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/qa/qa/page/file/show.rb b/qa/qa/page/file/show.rb
index 63db1ec5bcece0..e82be661e691e4 100644
--- a/qa/qa/page/file/show.rb
+++ b/qa/qa/page/file/show.rb
@@ -43,6 +43,12 @@ def click_commit_changes
click_element('commit-btn')
end
+ def commit_changes_through_modal
+ within_element 'commit-change-modal' do
+ click_element('commit-change-modal-commit-button')
+ end
+ end
+
def has_modal_commit_button?
has_element?('commit-change-modal-commit-button')
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb
index b00a34de343200..77e3895ed1eab5 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb
@@ -16,7 +16,7 @@ module QA
Page::File::Show.perform do |file|
file.click_delete
file.add_commit_message(commit_message_for_delete)
- file.click_commit_changes
+ file.commit_changes_through_modal
end
Page::Project::Show.perform do |project|
diff --git a/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb b/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
index 9558d15ab14b86..35098462e1b2bc 100644
--- a/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
@@ -29,10 +29,11 @@ module QA
file.add_content("# #{edited_readme_content}")
file.preview
expect(file.has_markdown_preview?('h1', edited_readme_content)).to be true
- file.commit_changes
end
Page::File::Show.perform do |file|
+ file.click_commit_changes
+ file.commit_changes_through_modal
aggregate_failures 'file details' do
expect(file).to have_notice('Your changes have been committed successfully.')
expect(file).to have_file_content(edited_readme_content)
--
GitLab
From 13fce01a6c0b85dfc853e6aee7e237c4df95d98e Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Thu, 7 Nov 2024 13:39:13 -0500
Subject: [PATCH 11/16] Show patch branch name for protected branch
---
.../repository/components/commit_changes_modal.vue | 4 ++--
app/helpers/blob_helper.rb | 6 +++---
spec/features/projects/blobs/edit_spec.rb | 5 +++--
spec/helpers/blob_helper_spec.rb | 9 ++++++---
4 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/app/assets/javascripts/repository/components/commit_changes_modal.vue b/app/assets/javascripts/repository/components/commit_changes_modal.vue
index 92c809dfad4076..c33d30419f433c 100644
--- a/app/assets/javascripts/repository/components/commit_changes_modal.vue
+++ b/app/assets/javascripts/repository/components/commit_changes_modal.vue
@@ -138,9 +138,9 @@ export default {
// fields key must match case of form name for validation directive to work
commit_message: initFormField({ value: this.commitMessage }),
branch_name: initFormField({
- value: this.canPushToBranch ? this.originalBranch : '',
+ value: this.targetBranch,
// Branch name is pre-filled with the current branch name in two scenarios and therefore doesn't need validation:
- // 1. When the user doesn't have permission to push to the repo (e.g., guest user)
+ // 1. When the user doesn't have permission to push to the repo (e.g. guest user)
// 2. When the user can push directly to the current branch
skipValidation: !this.canPushCode || this.canPushToBranch,
}),
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index a0b8ea06618ad4..aaf78bc93f9e69 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -297,8 +297,8 @@ def vue_blob_app_data(project, blob, ref)
project_path: project.full_path,
resource_id: project.to_global_id,
user_id: current_user.present? ? current_user.to_global_id : '',
- target_branch: project.empty_repo? ? ref : @ref,
- original_branch: @ref,
+ target_branch: selected_branch,
+ original_branch: ref,
can_download_code: can?(current_user, :download_code, project).to_s
}
end
@@ -308,7 +308,7 @@ def edit_blob_app_data(project, id, blob, ref)
update_path: project_update_blob_path(project, id),
cancel_path: project_blob_path(project, id),
original_branch: ref,
- target_branch: ref,
+ target_branch: selected_branch,
can_push_code: can?(current_user, :push_code, project).to_s,
can_push_to_branch: project.present(current_user: current_user).can_current_user_push_to_branch?(ref).to_s,
empty_repo: project.empty_repo?.to_s,
diff --git a/spec/features/projects/blobs/edit_spec.rb b/spec/features/projects/blobs/edit_spec.rb
index afde4b5fd0396e..fe79dd7d6d475c 100644
--- a/spec/features/projects/blobs/edit_spec.rb
+++ b/spec/features/projects/blobs/edit_spec.rb
@@ -218,14 +218,15 @@ def has_toolbar_buttons
end
context 'with protected branch' do
- it 'shows blob editor with option to create MR' do
+ it 'shows blob editor with patch branch and option to create MR' do
freeze_time do
visit project_edit_blob_path(project, tree_join(protected_branch, file_path))
click_button('Commit changes')
+ epoch = Time.zone.now.strftime('%s%L').last(5)
expect(page).to have_checked_field _('Create a merge request for this change')
- expect(page).to have_field _('Commit to a new branch')
+ expect(find_field(_('Commit to a new branch')).value).to eq "#{user.username}-protected-branch-patch-#{epoch}"
end
end
end
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index 41277e36e9cab6..e7a36a28093fe3 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -394,12 +394,16 @@
describe '#vue_blob_app_data' do
let(:blob) { fake_blob(path: 'file.md', size: 2.megabytes) }
- let(:project) { build_stubbed(:project) }
+ let(:project) { create(:project) }
let(:user) { build_stubbed(:user) }
let(:ref) { 'main' }
- it 'returns data related to blob app' do
+ before do
+ allow(helper).to receive(:selected_branch).and_return(ref)
allow(helper).to receive(:current_user).and_return(user)
+ end
+
+ it 'returns data related to blob app' do
assign(:ref, ref)
expect(helper.vue_blob_app_data(project, blob, ref)).to include({
@@ -417,7 +421,6 @@
let_it_be(:user) { build_stubbed(:user) }
before do
- allow(helper).to receive(:current_user).and_return(user)
allow(Ability).to receive(:allowed?).and_call_original
allow(Ability).to receive(:allowed?).with(user, :download_code, project).and_return(true)
end
--
GitLab
From ab9238b495f29f521b7a98ec54981142be643b8e Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Thu, 7 Nov 2024 15:32:04 -0500
Subject: [PATCH 12/16] Clean up shared variables in qa tests
---
.../repository/pages/blob_edit_header.vue | 2 +-
qa/qa/page/file/shared/editor.rb | 12 ++++++++++--
qa/qa/page/file/show.rb | 19 +------------------
.../file/delete_file_via_web_spec.rb | 3 ++-
.../repository/file/edit_file_via_web_spec.rb | 2 +-
.../source_editor_toolbar_spec.rb | 4 ++--
.../user/user_inherited_access_spec.rb | 7 ++++---
.../repository/pages/blob_edit_header_spec.js | 2 +-
8 files changed, 22 insertions(+), 29 deletions(-)
diff --git a/app/assets/javascripts/repository/pages/blob_edit_header.vue b/app/assets/javascripts/repository/pages/blob_edit_header.vue
index b8333406057a81..3a9f4959713b8a 100644
--- a/app/assets/javascripts/repository/pages/blob_edit_header.vue
+++ b/app/assets/javascripts/repository/pages/blob_edit_header.vue
@@ -70,7 +70,7 @@ export default {
@click="handleCancelButtonClick"
>{{ $options.i18n.cancelButtonText }}
-
+
{{ $options.i18n.commitButtonText }}
diff --git a/qa/qa/page/file/shared/editor.rb b/qa/qa/page/file/shared/editor.rb
index 5eb55411ac6788..93db7b6807fe15 100644
--- a/qa/qa/page/file/shared/editor.rb
+++ b/qa/qa/page/file/shared/editor.rb
@@ -21,6 +21,10 @@ def self.included(base)
base.view 'app/assets/javascripts/repository/components/commit_changes_modal.vue' do
element 'commit-change-modal-commit-button'
end
+
+ base.view 'app/assets/javascripts/repository/pages/blob_edit_header.vue' do
+ element 'blob-edit-header-commit-button'
+ end
end
def add_content(content)
@@ -35,8 +39,8 @@ def remove_content
end
end
- def click_commit_changes
- click_on 'Commit changes'
+ def click_commit_changes_in_header
+ click_element('blob-edit-header-commit-button')
end
def commit_changes_through_modal
@@ -45,6 +49,10 @@ def commit_changes_through_modal
end
end
+ def has_modal_commit_button?
+ has_element?('commit-change-modal-commit-button')
+ end
+
private
def text_area
diff --git a/qa/qa/page/file/show.rb b/qa/qa/page/file/show.rb
index e82be661e691e4..6bb4b9b1b80448 100644
--- a/qa/qa/page/file/show.rb
+++ b/qa/qa/page/file/show.rb
@@ -7,6 +7,7 @@ class Show < Page::Base
include Shared::CommitMessage
include Layout::Flash
include Page::Component::BlobContent
+ include Shared::Editor
view 'app/assets/javascripts/repository/components/blob_button_group.vue' do
element 'lock-button'
@@ -18,10 +19,6 @@ class Show < Page::Base
element 'webide-menu-item', ':data-testid="`${action.key}-menu-item`"' # rubocop:disable QA/ElementWithPattern
end
- view 'app/assets/javascripts/repository/pages/blob_edit_header.vue' do
- element 'commit-btn'
- end
-
def click_edit
click_element('action-dropdown')
click_element('edit-menu-item')
@@ -38,20 +35,6 @@ def highlight_text
def explain_code
click_element('question-icon')
end
-
- def click_commit_changes
- click_element('commit-btn')
- end
-
- def commit_changes_through_modal
- within_element 'commit-change-modal' do
- click_element('commit-change-modal-commit-button')
- end
- end
-
- def has_modal_commit_button?
- has_element?('commit-change-modal-commit-button')
- end
end
end
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb
index 77e3895ed1eab5..865c632e71725a 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb
@@ -16,9 +16,10 @@ module QA
Page::File::Show.perform do |file|
file.click_delete
file.add_commit_message(commit_message_for_delete)
- file.commit_changes_through_modal
end
+ Page::File::Edit.perform(&:commit_changes_through_modal)
+
Page::Project::Show.perform do |project|
aggregate_failures 'file details' do
expect(project).to have_notice('The file has been successfully deleted.')
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb
index 4ff5c65cb49093..4c56ae4bd31c37 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb
@@ -19,7 +19,7 @@ module QA
Page::File::Form.perform do |file|
file.remove_content
file.add_content(updated_file_content)
- file.click_commit_changes
+ file.click_commit_changes_in_header
file.add_commit_message(commit_message_for_update)
file.commit_changes_through_modal
end
diff --git a/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb b/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
index 35098462e1b2bc..d04775b9d42a4f 100644
--- a/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb
@@ -29,11 +29,11 @@ module QA
file.add_content("# #{edited_readme_content}")
file.preview
expect(file.has_markdown_preview?('h1', edited_readme_content)).to be true
+ file.click_commit_changes_in_header
+ file.commit_changes_through_modal
end
Page::File::Show.perform do |file|
- file.click_commit_changes
- file.commit_changes_through_modal
aggregate_failures 'file details' do
expect(file).to have_notice('Your changes have been committed successfully.')
expect(file).to have_file_content(edited_readme_content)
diff --git a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
index 9c73c3e960c6be..eb588880982e2e 100644
--- a/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
+++ b/qa/qa/specs/features/browser_ui/9_data_stores/user/user_inherited_access_spec.rb
@@ -39,9 +39,10 @@ module QA
project.click_file('README.md')
end
- Page::File::Show.perform do |file|
- file.click_edit
- file.click_commit_changes
+ Page::File::Show.perform(&:click_edit)
+
+ Page::File::Edit.perform do |file|
+ file.click_commit_changes_in_header
expect(file).to have_modal_commit_button
end
end
diff --git a/spec/frontend/repository/pages/blob_edit_header_spec.js b/spec/frontend/repository/pages/blob_edit_header_spec.js
index a717e9bca0b1d2..2941e010a484d3 100644
--- a/spec/frontend/repository/pages/blob_edit_header_spec.js
+++ b/spec/frontend/repository/pages/blob_edit_header_spec.js
@@ -44,7 +44,7 @@ describe('BlobEditHeader', () => {
const findTitle = () => wrapper.find('h1');
const findButtons = () => wrapper.findAllComponents(GlButton);
const findCommitChangesModal = () => wrapper.findComponent(CommitChangesModal);
- const findCommitChangesButton = () => wrapper.findByTestId('commit-btn');
+ const findCommitChangesButton = () => wrapper.findByTestId('blob-edit-header-commit-button');
it('renders title with two buttons', () => {
expect(findTitle().text()).toBe('Edit file');
--
GitLab
From 077f987ba34a08cf2aea5e288bf2c96bf8ee15db Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Thu, 7 Nov 2024 21:20:47 -0500
Subject: [PATCH 13/16] Address code review comments:
- Add logic to handle rename flow
- Refactor to use `getParameterByName`
- Add test for `getFileContent`
---
app/assets/javascripts/blob_edit/edit_blob.js | 2 +
.../components/commit_changes_modal.vue | 18 ++++++--
.../repository/pages/blob_edit_header.vue | 3 ++
spec/frontend/blob_edit/edit_blob_spec.js | 10 +++-
.../components/commit_changes_modal_spec.js | 46 +++++++++++--------
.../repository/pages/blob_edit_header_spec.js | 2 +
spec/helpers/blob_helper_spec.rb | 2 +-
7 files changed, 57 insertions(+), 26 deletions(-)
diff --git a/app/assets/javascripts/blob_edit/edit_blob.js b/app/assets/javascripts/blob_edit/edit_blob.js
index 0a35ba64c075d0..7fbaa0d510d76a 100644
--- a/app/assets/javascripts/blob_edit/edit_blob.js
+++ b/app/assets/javascripts/blob_edit/edit_blob.js
@@ -145,8 +145,10 @@ export default class EditBlob {
initFilepathListeners() {
const fileNameEl = document.getElementById('file_path') || document.getElementById('file_name');
this.editor.updateModelLanguage(fileNameEl.value);
+ this.editor.filePath = fileNameEl.value;
fileNameEl.addEventListener('input', () => {
this.editor.updateModelLanguage(fileNameEl.value);
+ this.editor.filePath = fileNameEl.value;
});
}
diff --git a/app/assets/javascripts/repository/components/commit_changes_modal.vue b/app/assets/javascripts/repository/components/commit_changes_modal.vue
index c33d30419f433c..ef0b7ee986abf8 100644
--- a/app/assets/javascripts/repository/components/commit_changes_modal.vue
+++ b/app/assets/javascripts/repository/components/commit_changes_modal.vue
@@ -15,6 +15,7 @@ import csrf from '~/lib/utils/csrf';
import { __, s__ } from '~/locale';
import validation, { initFormField } from '~/vue_shared/directives/validation';
import { helpPagePath } from '~/helpers/help_page_helper';
+import { getParameterByName } from '~/lib/utils/url_utility';
import {
SECONDARY_OPTIONS_TEXT,
COMMIT_LABEL,
@@ -114,6 +115,11 @@ export default {
required: false,
default: null,
},
+ filePath: {
+ type: String,
+ required: false,
+ default: null,
+ },
isEdit: {
type: Boolean,
required: false,
@@ -210,8 +216,7 @@ export default {
return !this.isUsingLfs || (this.isUsingLfs && this.lfsWarningDismissed) || this.isEdit;
},
fromMergeRequestIid() {
- const urlParams = new URLSearchParams(window.location.search);
- return urlParams.get('from_merge_request_iid') || '';
+ return getParameterByName('from_merge_request_iid') || '';
},
},
watch: {
@@ -301,9 +306,12 @@ export default {
-
-
-
+
+
+
+
+
+
diff --git a/app/assets/javascripts/repository/pages/blob_edit_header.vue b/app/assets/javascripts/repository/pages/blob_edit_header.vue
index 3a9f4959713b8a..9ddceb451381f6 100644
--- a/app/assets/javascripts/repository/pages/blob_edit_header.vue
+++ b/app/assets/javascripts/repository/pages/blob_edit_header.vue
@@ -29,6 +29,7 @@ export default {
return {
isCommitChangeModalOpen: false,
fileContent: null,
+ filePath: null,
};
},
computed: {
@@ -45,6 +46,7 @@ export default {
},
openModal() {
this.fileContent = this.editor.getFileContent();
+ this.filePath = this.editor.filePath;
this.$refs[this.updateModalId].show();
},
},
@@ -86,6 +88,7 @@ export default {
:can-push-to-branch="canPushToBranch"
:is-using-lfs="isUsingLfs"
:file-content="fileContent"
+ :file-path="filePath"
:branch-allows-collaboration="branchAllowsCollaboration"
:last-commit-sha="lastCommitSha"
method="put"
diff --git a/spec/frontend/blob_edit/edit_blob_spec.js b/spec/frontend/blob_edit/edit_blob_spec.js
index 27e456437586c5..ac735f8a78dcd0 100644
--- a/spec/frontend/blob_edit/edit_blob_spec.js
+++ b/spec/frontend/blob_edit/edit_blob_spec.js
@@ -49,15 +49,18 @@ describe('Blob Editing', () => {
const filePath = 'path/to/file.js';
const useMock = jest.fn(() => markdownExtensions);
const unuseMock = jest.fn();
+ const valueMock = 'test value';
+ const getValueMock = jest.fn().mockReturnValue('test value');
const emitter = new Emitter();
const mockInstance = {
use: useMock,
unuse: unuseMock,
setValue: jest.fn(),
- getValue: jest.fn().mockReturnValue('test value'),
+ getValue: getValueMock,
focus: jest.fn(),
onDidChangeModelLanguage: emitter.event,
updateModelLanguage: jest.fn(),
+ filePath: 'test.md',
};
beforeEach(() => {
@@ -114,6 +117,11 @@ describe('Blob Editing', () => {
}),
);
});
+
+ it('returns content from the editor', () => {
+ expect(blobInstance.getFileContent()).toBe(valueMock);
+ expect(getValueMock).toHaveBeenCalled();
+ });
});
it('loads SourceEditorExtension and FileTemplateExtension by default', async () => {
diff --git a/spec/frontend/repository/components/commit_changes_modal_spec.js b/spec/frontend/repository/components/commit_changes_modal_spec.js
index e9826d3d1890e4..7f2ee88da3529a 100644
--- a/spec/frontend/repository/components/commit_changes_modal_spec.js
+++ b/spec/frontend/repository/components/commit_changes_modal_spec.js
@@ -156,7 +156,7 @@ describe('CommitChangesModal', () => {
it('shows the correct form fields when `canPushToBranch` is `false`', () => {
createComponent({ canPushToBranch: false, canPushCode: true });
- expect(wrapper.vm.$data.form.fields.branch_name.value).toBe('');
+ expect(wrapper.vm.$data.form.fields.branch_name.value).toBe('some-target-branch');
expect(findCommitTextarea().exists()).toBe(true);
expect(findRadioGroup().exists()).toBe(false);
expect(findTargetInput().exists()).toBe(true);
@@ -169,7 +169,7 @@ describe('CommitChangesModal', () => {
feedback: null,
required: true,
state: true,
- value: 'main',
+ value: 'some-target-branch',
});
findFormRadioGroup().vm.$emit('input', true);
@@ -184,23 +184,27 @@ describe('CommitChangesModal', () => {
});
it.each`
- input | value | emptyRepo | canPushCode | canPushToBranch | method | fileContent | lastCommitSha | fromMergeRequestIid | exist
- ${'authenticity_token'} | ${'mock-csrf-token'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'authenticity_token'} | ${'mock-csrf-token'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'_method'} | ${'delete'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'_method'} | ${'delete'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'_method'} | ${'put'} | ${false} | ${true} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${true}
- ${'_method'} | ${'put'} | ${true} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${true}
- ${'original_branch'} | ${initialProps.originalBranch} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'original_branch'} | ${undefined} | ${true} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${false}
- ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'create_merge_request'} | ${'1'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${false} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${true}
- ${'create_merge_request'} | ${undefined} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${false}
- ${'content'} | ${'some new content'} | ${false} | ${false} | ${true} | ${'put'} | ${'some new content'} | ${''} | ${''} | ${true}
- ${'last_commit_sha'} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${''} | ${true}
- ${'from_merge_request_iid'} | ${'17'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${'17'} | ${true}
+ input | value | emptyRepo | canPushCode | canPushToBranch | method | fileContent | filePath | lastCommitSha | fromMergeRequestIid | isEdit | exist
+ ${'authenticity_token'} | ${'mock-csrf-token'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'authenticity_token'} | ${'mock-csrf-token'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'_method'} | ${'delete'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'_method'} | ${'delete'} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'_method'} | ${'put'} | ${false} | ${true} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'_method'} | ${'put'} | ${true} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'original_branch'} | ${initialProps.originalBranch} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'original_branch'} | ${undefined} | ${true} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${false}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${false} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'create_merge_request'} | ${'1'} | ${false} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
+ ${'create_merge_request'} | ${undefined} | ${true} | ${false} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${false}
+ ${'content'} | ${'some new content'} | ${false} | ${false} | ${true} | ${'put'} | ${'some new content'} | ${'.gitignore'} | ${''} | ${''} | ${false} | ${false}
+ ${'file_path'} | ${'.gitignore'} | ${false} | ${false} | ${true} | ${'put'} | ${'some new content'} | ${'.gitignore'} | ${''} | ${''} | ${false} | ${false}
+ ${'file_path'} | ${'.gitignore'} | ${false} | ${false} | ${true} | ${'put'} | ${'some new content'} | ${'.gitignore'} | ${''} | ${''} | ${true} | ${true}
+ ${'last_commit_sha'} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${''} | ${false} | ${false}
+ ${'last_commit_sha'} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${'782426692977b2cedb4452ee6501a404410f9b00'} | ${''} | ${true} | ${true}
+ ${'from_merge_request_iid'} | ${'17'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${'17'} | ${false} | ${false}
+ ${'from_merge_request_iid'} | ${'17'} | ${false} | ${false} | ${true} | ${'put'} | ${''} | ${''} | ${''} | ${'17'} | ${true} | ${true}
`(
'passes $input as a hidden input with the correct value',
({
@@ -214,6 +218,8 @@ describe('CommitChangesModal', () => {
fileContent,
lastCommitSha,
fromMergeRequestIid,
+ isEdit,
+ filePath,
}) => {
if (fromMergeRequestIid) {
setWindowLocation(
@@ -227,6 +233,8 @@ describe('CommitChangesModal', () => {
method,
fileContent,
lastCommitSha,
+ isEdit,
+ filePath,
});
const inputMethod = findForm().find(`input[name="${input}"]`);
diff --git a/spec/frontend/repository/pages/blob_edit_header_spec.js b/spec/frontend/repository/pages/blob_edit_header_spec.js
index 2941e010a484d3..e4e77f28086cfb 100644
--- a/spec/frontend/repository/pages/blob_edit_header_spec.js
+++ b/spec/frontend/repository/pages/blob_edit_header_spec.js
@@ -9,6 +9,7 @@ describe('BlobEditHeader', () => {
let wrapper;
const mockEditor = {
getFileContent: jest.fn().mockReturnValue('test content'),
+ filePath: '.gitignore',
};
const createWrapper = () => {
@@ -65,6 +66,7 @@ describe('BlobEditHeader', () => {
commitMessage: 'Edit test.js',
emptyRepo: false,
fileContent: 'test content',
+ filePath: '.gitignore',
isUsingLfs: false,
method: 'put',
modalId: 'update-modal3',
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index e7a36a28093fe3..56cf68821a273e 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -210,7 +210,7 @@
end
describe '#ide_edit_path' do
- let(:project) { create(:project) }
+ let_it_be(:project) { create(:project) }
let(:current_user) { create(:user) }
let(:can_push_code) { true }
--
GitLab
From f492684c4f2a8a332ce1dda929e3b52591952c78 Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Fri, 8 Nov 2024 11:14:03 -0500
Subject: [PATCH 14/16] Use `filepathFormMediator`
---
app/assets/javascripts/blob_edit/edit_blob.js | 2 --
app/assets/javascripts/repository/pages/blob_edit_header.vue | 2 +-
spec/frontend/blob_edit/edit_blob_spec.js | 1 -
spec/frontend/repository/pages/blob_edit_header_spec.js | 2 +-
spec/helpers/blob_helper_spec.rb | 2 +-
5 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/app/assets/javascripts/blob_edit/edit_blob.js b/app/assets/javascripts/blob_edit/edit_blob.js
index 7fbaa0d510d76a..0a35ba64c075d0 100644
--- a/app/assets/javascripts/blob_edit/edit_blob.js
+++ b/app/assets/javascripts/blob_edit/edit_blob.js
@@ -145,10 +145,8 @@ export default class EditBlob {
initFilepathListeners() {
const fileNameEl = document.getElementById('file_path') || document.getElementById('file_name');
this.editor.updateModelLanguage(fileNameEl.value);
- this.editor.filePath = fileNameEl.value;
fileNameEl.addEventListener('input', () => {
this.editor.updateModelLanguage(fileNameEl.value);
- this.editor.filePath = fileNameEl.value;
});
}
diff --git a/app/assets/javascripts/repository/pages/blob_edit_header.vue b/app/assets/javascripts/repository/pages/blob_edit_header.vue
index 9ddceb451381f6..b372e91a043b36 100644
--- a/app/assets/javascripts/repository/pages/blob_edit_header.vue
+++ b/app/assets/javascripts/repository/pages/blob_edit_header.vue
@@ -46,7 +46,7 @@ export default {
},
openModal() {
this.fileContent = this.editor.getFileContent();
- this.filePath = this.editor.filePath;
+ this.filePath = this.editor.filepathFormMediator?.$filenameInput?.val();
this.$refs[this.updateModalId].show();
},
},
diff --git a/spec/frontend/blob_edit/edit_blob_spec.js b/spec/frontend/blob_edit/edit_blob_spec.js
index ac735f8a78dcd0..974f0d57c0ebad 100644
--- a/spec/frontend/blob_edit/edit_blob_spec.js
+++ b/spec/frontend/blob_edit/edit_blob_spec.js
@@ -60,7 +60,6 @@ describe('Blob Editing', () => {
focus: jest.fn(),
onDidChangeModelLanguage: emitter.event,
updateModelLanguage: jest.fn(),
- filePath: 'test.md',
};
beforeEach(() => {
diff --git a/spec/frontend/repository/pages/blob_edit_header_spec.js b/spec/frontend/repository/pages/blob_edit_header_spec.js
index e4e77f28086cfb..f167780ef57f83 100644
--- a/spec/frontend/repository/pages/blob_edit_header_spec.js
+++ b/spec/frontend/repository/pages/blob_edit_header_spec.js
@@ -9,7 +9,7 @@ describe('BlobEditHeader', () => {
let wrapper;
const mockEditor = {
getFileContent: jest.fn().mockReturnValue('test content'),
- filePath: '.gitignore',
+ filepathFormMediator: { $filenameInput: { val: jest.fn().mockReturnValue('.gitignore') } },
};
const createWrapper = () => {
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index 56cf68821a273e..6d155e32e04c81 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -394,7 +394,7 @@
describe '#vue_blob_app_data' do
let(:blob) { fake_blob(path: 'file.md', size: 2.megabytes) }
- let(:project) { create(:project) }
+ let(:project) { build_stubbed(:project) }
let(:user) { build_stubbed(:user) }
let(:ref) { 'main' }
--
GitLab
From 8e80d9378e575b848f9da9844da1ee92999ec00e Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Mon, 11 Nov 2024 16:06:23 -0500
Subject: [PATCH 15/16] Pre-populate branch name in all cases
---
.../components/commit_changes_modal.vue | 17 ----------------
locale/gitlab.pot | 3 ---
.../components/commit_changes_modal_spec.js | 20 -------------------
3 files changed, 40 deletions(-)
diff --git a/app/assets/javascripts/repository/components/commit_changes_modal.vue b/app/assets/javascripts/repository/components/commit_changes_modal.vue
index ef0b7ee986abf8..ea457a32d08e2f 100644
--- a/app/assets/javascripts/repository/components/commit_changes_modal.vue
+++ b/app/assets/javascripts/repository/components/commit_changes_modal.vue
@@ -219,21 +219,6 @@ export default {
return getParameterByName('from_merge_request_iid') || '';
},
},
- watch: {
- createNewBranch: {
- handler(newValue) {
- if (newValue) {
- this.form.fields.branch_name.value = '';
- } else {
- this.form.fields.branch_name = {
- ...this.form.fields.branch_name,
- value: this.originalBranch,
- state: true,
- };
- }
- },
- },
- },
methods: {
show() {
this.$refs[this.modalId].show();
@@ -370,7 +355,6 @@ export default {
:disabled="loading"
name="branch_name"
required
- :placeholder="__('example-branch-name')"
class="gl-mt-2"
/>
@@ -393,7 +377,6 @@ export default {
:disabled="loading"
name="branch_name"
required
- :placeholder="__('example-branch-name')"
class="gl-mt-2"
/>
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 92edf142ae1a39..48f8472eafe59e 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -65496,9 +65496,6 @@ msgstr ""
msgid "event"
msgstr ""
-msgid "example-branch-name"
-msgstr ""
-
msgid "example.com"
msgstr ""
diff --git a/spec/frontend/repository/components/commit_changes_modal_spec.js b/spec/frontend/repository/components/commit_changes_modal_spec.js
index 7f2ee88da3529a..c9980415667181 100644
--- a/spec/frontend/repository/components/commit_changes_modal_spec.js
+++ b/spec/frontend/repository/components/commit_changes_modal_spec.js
@@ -163,26 +163,6 @@ describe('CommitChangesModal', () => {
expect(findCreateMrCheckbox().text()).toBe('Create a merge request for this change');
});
- it('clear branch name when new branch option is selected', async () => {
- createComponent();
- expect(wrapper.vm.$data.form.fields.branch_name).toEqual({
- feedback: null,
- required: true,
- state: true,
- value: 'some-target-branch',
- });
-
- findFormRadioGroup().vm.$emit('input', true);
- await nextTick();
-
- expect(wrapper.vm.$data.form.fields.branch_name).toEqual({
- feedback: null,
- required: true,
- state: true,
- value: '',
- });
- });
-
it.each`
input | value | emptyRepo | canPushCode | canPushToBranch | method | fileContent | filePath | lastCommitSha | fromMergeRequestIid | isEdit | exist
${'authenticity_token'} | ${'mock-csrf-token'} | ${false} | ${true} | ${true} | ${'delete'} | ${''} | ${''} | ${''} | ${''} | ${false} | ${true}
--
GitLab
From b1b709c10687dac93c1206ba1f43a020d83a615f Mon Sep 17 00:00:00 2001
From: Chaoyue Zhao
Date: Mon, 11 Nov 2024 16:06:36 -0500
Subject: [PATCH 16/16] Fix blob helper unit test in ee
---
ee/spec/helpers/ee/blob_helper_spec.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ee/spec/helpers/ee/blob_helper_spec.rb b/ee/spec/helpers/ee/blob_helper_spec.rb
index a7fd1460a44f74..d9eeefb7d1d30c 100644
--- a/ee/spec/helpers/ee/blob_helper_spec.rb
+++ b/ee/spec/helpers/ee/blob_helper_spec.rb
@@ -69,7 +69,7 @@
let(:ref) { 'main' }
it 'returns data related to blob app' do
- allow(helper).to receive(:current_user).and_return(nil)
+ allow(helper).to receive_messages(selected_branch: ref, current_user: nil)
expect(helper.vue_blob_app_data(project, blob, ref)).to include({
user_id: '',
--
GitLab