diff --git a/app/assets/javascripts/pages/projects/tags/releases/index.js b/app/assets/javascripts/pages/projects/tags/releases/index.js new file mode 100644 index 0000000000000000000000000000000000000000..d6afc71fb031d7655d831892578b27e2a2d802e8 --- /dev/null +++ b/app/assets/javascripts/pages/projects/tags/releases/index.js @@ -0,0 +1,8 @@ +import $ from 'jquery'; +import ZenMode from '~/zen_mode'; +import GLForm from '~/gl_form'; + +document.addEventListener('DOMContentLoaded', () => { + new ZenMode(); // eslint-disable-line no-new + new GLForm($('.release-form')); // eslint-disable-line no-new +}); diff --git a/app/views/projects/tags/_tag.html.haml b/app/views/projects/tags/_tag.html.haml index f55202c2c5f05ae0a16c116e9c37e76e24af5581..cc203cfad86fb2e9c48d9ead1d2b8e31481089cc 100644 --- a/app/views/projects/tags/_tag.html.haml +++ b/app/views/projects/tags/_tag.html.haml @@ -28,7 +28,7 @@ = render 'projects/buttons/download', project: @project, ref: tag.name, pipeline: @tags_pipelines[tag.name] - if can?(current_user, :push_code, @project) - = link_to edit_project_tag_release_path(@project, tag.name), class: 'btn has-tooltip', title: s_('TagsPage|Edit release notes'), data: { container: "body" } do + = link_to edit_project_tag_release_path(@project, tag.name), class: 'btn btn-edit has-tooltip', title: s_('TagsPage|Edit release notes'), data: { container: "body" } do = icon("pencil") - if can?(current_user, :admin_project, @project) diff --git a/app/views/projects/tags/show.html.haml b/app/views/projects/tags/show.html.haml index 15a960f81b877791ef78d3fd007d5d2e2b6d80c7..feeaf799f513c3773941ac209337d6d0347dad24 100644 --- a/app/views/projects/tags/show.html.haml +++ b/app/views/projects/tags/show.html.haml @@ -20,7 +20,7 @@ .nav-controls.controls-flex - if can?(current_user, :push_code, @project) - = link_to edit_project_tag_release_path(@project, @tag.name), class: 'btn controls-item has-tooltip', title: s_('TagsPage|Edit release notes') do + = link_to edit_project_tag_release_path(@project, @tag.name), class: 'btn btn-edit controls-item has-tooltip', title: s_('TagsPage|Edit release notes') do = icon("pencil") = link_to project_tree_path(@project, @tag.name), class: 'btn controls-item has-tooltip', title: s_('TagsPage|Browse files') do = icon('files-o') diff --git a/changelogs/unreleased/56424-fix-gl-form-init-tag-editing.yml b/changelogs/unreleased/56424-fix-gl-form-init-tag-editing.yml new file mode 100644 index 0000000000000000000000000000000000000000..b19b4d650fdbf0084d5a7e62b89f1ffc824bb276 --- /dev/null +++ b/changelogs/unreleased/56424-fix-gl-form-init-tag-editing.yml @@ -0,0 +1,5 @@ +--- +title: Fix form functionality for edit tag page +merge_request: 24645 +author: +type: fixed diff --git a/spec/features/projects/tags/user_edits_tags_spec.rb b/spec/features/projects/tags/user_edits_tags_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..ebb2844d17facf4049b764db27523bcaf41f186f --- /dev/null +++ b/spec/features/projects/tags/user_edits_tags_spec.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Project > Tags', :js do + include DropzoneHelper + + let(:user) { create(:user) } + let(:role) { :developer } + let(:project) { create(:project, :repository) } + + before do + sign_in(user) + project.add_role(user, role) + end + + describe 'when opening project tags' do + before do + visit project_tags_path(project) + end + + context 'page with tags list' do + it 'shows tag name' do + page.within first('.tags > .content-list > li') do + expect(page.find('.row-main-content')).to have_content 'v1.1.0 Version 1.1.0' + end + end + + it 'shows tag edit button' do + page.within first('.tags > .content-list > li') do + edit_btn = page.find('.row-fixed-content.controls a.btn-edit') + + expect(edit_btn['href']).to have_content '/tags/v1.1.0/release/edit' + end + end + end + + context 'edit tag release notes' do + before do + find('.tags > .content-list > li:first-child .row-fixed-content.controls a.btn-edit').click + end + + it 'shows tag name header' do + page.within('.content') do + expect(page.find('.sub-header-block')).to have_content 'Release notes for tag v1.1.0' + end + end + + it 'shows release notes form' do + page.within('.content') do + expect(page).to have_selector('form.release-form') + end + end + + it 'toolbar buttons on release notes form are functional' do + page.within('.content form.release-form') do + note_textarea = page.find('.js-gfm-input') + + # Click on Bold button + page.find('.md-header-toolbar button.toolbar-btn:first-child').click + + expect(note_textarea.value).to eq('****') + end + end + + it 'release notes form shows "Attach a file" button', :js do + page.within('.content form.release-form') do + expect(page).to have_button('Attach a file') + expect(page).not_to have_selector('.uploading-progress-container', visible: true) + end + end + + it 'shows "Attaching a file" message on uploading 1 file', :js do + slow_requests do + dropzone_file([Rails.root.join('spec', 'fixtures', 'dk.png')], 0, false) + + expect(page).to have_selector('.attaching-file-message', visible: true, text: 'Attaching a file -') + end + end + end + end +end