Commit fd2b79b6 authored by Fatih Acet's avatar Fatih Acet

Merge branch '22456-option-to-choose-for-no-issue-template' into 'master'

Added 'No template' functionality to issuable templates

## What does this MR do?

Adds dropdown new footer item `.no-template`, when clicked it clears the `currentTemplate`, updates the editor and resets the dropdown toggle text.

## Are there points in the code the reviewer needs to double check?

## Why was this MR needed?

## Screenshots (if relevant)

![2016-10-10_03.21.45](/uploads/86ae95410807c66ce7b8be63c7ec2c20/2016-10-10_03.21.45.gif)

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if it does - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

## What are the relevant issue numbers?

Closes #22456

See merge request !6765
parents ca3bef55 ae851edc
...@@ -16,7 +16,13 @@ ...@@ -16,7 +16,13 @@
if (initialQuery.name) this.requestFile(initialQuery); if (initialQuery.name) this.requestFile(initialQuery);
$('.reset-template', this.dropdown.parent()).on('click', () => { $('.reset-template', this.dropdown.parent()).on('click', () => {
if (this.currentTemplate) this.setInputValueToTemplateContent(false); this.setInputValueToTemplateContent();
});
$('.no-template', this.dropdown.parent()).on('click', () => {
this.currentTemplate = '';
this.setInputValueToTemplateContent();
$('.dropdown-toggle-text', this.dropdown).text('Choose a template');
}); });
} }
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
data: { data: issuable_template_names, field_name: 'issuable_template', selected: selected_template(issuable), project_path: ref_project.path, namespace_path: ref_project.namespace.path } } ) do data: { data: issuable_template_names, field_name: 'issuable_template', selected: selected_template(issuable), project_path: ref_project.path, namespace_path: ref_project.namespace.path } } ) do
%ul.dropdown-footer-list %ul.dropdown-footer-list
%li %li
%a.no-template
No template
%a.reset-template %a.reset-template
Reset template Reset template
%div{ class: issuable_template_names.any? ? 'col-sm-7 col-lg-8' : 'col-sm-10' } %div{ class: issuable_template_names.any? ? 'col-sm-7 col-lg-8' : 'col-sm-10' }
......
...@@ -15,6 +15,7 @@ feature 'issuable templates', feature: true, js: true do ...@@ -15,6 +15,7 @@ feature 'issuable templates', feature: true, js: true do
let(:template_content) { 'this is a test "bug" template' } let(:template_content) { 'this is a test "bug" template' }
let(:longtemplate_content) { %Q(this\n\n\n\n\nis\n\n\n\n\na\n\n\n\n\nbug\n\n\n\n\ntemplate) } let(:longtemplate_content) { %Q(this\n\n\n\n\nis\n\n\n\n\na\n\n\n\n\nbug\n\n\n\n\ntemplate) }
let(:issue) { create(:issue, author: user, assignee: user, project: project) } let(:issue) { create(:issue, author: user, assignee: user, project: project) }
let(:description_addition) { ' appending to description' }
background do background do
project.repository.commit_file(user, '.gitlab/issue_templates/bug.md', template_content, 'added issue template', 'master', false) project.repository.commit_file(user, '.gitlab/issue_templates/bug.md', template_content, 'added issue template', 'master', false)
...@@ -26,7 +27,26 @@ feature 'issuable templates', feature: true, js: true do ...@@ -26,7 +27,26 @@ feature 'issuable templates', feature: true, js: true do
scenario 'user selects "bug" template' do scenario 'user selects "bug" template' do
select_template 'bug' select_template 'bug'
wait_for_ajax wait_for_ajax
preview_template(template_content) preview_template
save_changes
end
scenario 'user selects "bug" template and then "no template"' do
select_template 'bug'
wait_for_ajax
select_option 'No template'
wait_for_ajax
preview_template('')
save_changes('')
end
scenario 'user selects "bug" template, edits description and then selects "reset template"' do
select_template 'bug'
wait_for_ajax
find_field('issue_description').send_keys(description_addition)
preview_template(template_content + description_addition)
select_option 'Reset template'
preview_template
save_changes save_changes
end end
...@@ -37,7 +57,7 @@ feature 'issuable templates', feature: true, js: true do ...@@ -37,7 +57,7 @@ feature 'issuable templates', feature: true, js: true do
wait_for_ajax wait_for_ajax
end_height = page.evaluate_script('$(".markdown-area").outerHeight()') end_height = page.evaluate_script('$(".markdown-area").outerHeight()')
expect(end_height).not_to eq(start_height) expect(end_height).not_to eq(start_height)
end end
end end
...@@ -75,7 +95,7 @@ feature 'issuable templates', feature: true, js: true do ...@@ -75,7 +95,7 @@ feature 'issuable templates', feature: true, js: true do
scenario 'user selects "feature-proposal" template' do scenario 'user selects "feature-proposal" template' do
select_template 'feature-proposal' select_template 'feature-proposal'
wait_for_ajax wait_for_ajax
preview_template(template_content) preview_template
save_changes save_changes
end end
end end
...@@ -102,25 +122,31 @@ feature 'issuable templates', feature: true, js: true do ...@@ -102,25 +122,31 @@ feature 'issuable templates', feature: true, js: true do
scenario 'user selects template' do scenario 'user selects template' do
select_template 'feature-proposal' select_template 'feature-proposal'
wait_for_ajax wait_for_ajax
preview_template(template_content) preview_template
save_changes save_changes
end end
end end
end end
end end
def preview_template(expected_content) def preview_template(expected_content = template_content)
click_link 'Preview' click_link 'Preview'
expect(page).to have_content expected_content expect(page).to have_content expected_content
click_link 'Write'
end end
def save_changes def save_changes(expected_content = template_content)
click_button "Save changes" click_button "Save changes"
expect(page).to have_content template_content expect(page).to have_content expected_content
end end
def select_template(name) def select_template(name)
first('.js-issuable-selector').click first('.js-issuable-selector').click
first('.js-issuable-selector-wrap .dropdown-content a', text: name).click first('.js-issuable-selector-wrap .dropdown-content a', text: name).click
end end
def select_option(name)
first('.js-issuable-selector').click
first('.js-issuable-selector-wrap .dropdown-footer-list a', text: name).click
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment