Files
Redmine/test/system/list_autofill_test.rb
Go MAEDA fd4a0d8020 Automatic list marker does not work for task list items (#43265).
Patch by Mizuki ISHIKAWA (user:ishikawa999).


git-svn-id: https://svn.redmine.org/redmine/trunk@24057 e93f8b46-1217-0410-a6f0-8f06a7374b81
2025-10-21 04:54:34 +00:00

352 lines
11 KiB
Ruby
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# frozen_string_literal: true
require_relative '../application_system_test_case'
class ListAutofillSystemTest < ApplicationSystemTestCase
def setup
super
log_user('jsmith', 'jsmith')
end
def test_autofill_textile_unordered_list
with_settings :text_formatting => 'textile' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('* First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"* First item\n" \
"* ",
find('#issue_description').value
)
end
end
end
def test_autofill_textile_ordered_list
with_settings :text_formatting => 'textile' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('# First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"# First item\n" \
"# ",
find('#issue_description').value
)
end
end
end
def test_remove_list_marker_for_empty_item
with_settings :text_formatting => 'textile' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('* First item')
find('#issue_description').send_keys(:enter)
find('#issue_description').send_keys(:enter) # Press Enter on empty line removes the marker
assert_equal(
"* First item\n",
find('#issue_description').value
)
end
end
end
def test_autofill_markdown_unordered_list
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('- First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"- First item\n" \
"- ",
find('#issue_description').value
)
fill_in 'Description', with: ''
find('#issue_description').send_keys('* First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"* First item\n" \
"* ",
find('#issue_description').value
)
fill_in 'Description', with: ''
find('#issue_description').send_keys('+ First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"+ First item\n" \
"+ ",
find('#issue_description').value
)
end
end
end
def test_autofill_with_markdown_ordered_list
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('1. First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"1. First item\n" \
"2. ",
find('#issue_description').value
)
end
end
end
def test_autofill_with_markdown_ordered_list_using_parenthesis
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('1) First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"1) First item\n" \
"2) ",
find('#issue_description').value
)
end
end
end
def test_autofill_with_markdown_unchecked_task_list
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('- [ ] First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"- [ ] First item\n" \
"- [ ] ",
find('#issue_description').value
)
fill_in 'Description', with: ''
find('#issue_description').send_keys('1. [ ] First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"1. [ ] First item\n" \
"2. [ ] ",
find('#issue_description').value
)
end
end
end
def test_autofill_with_markdown_checked_task_list
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('- [x] First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"- [x] First item\n" \
"- [ ] ",
find('#issue_description').value
)
fill_in 'Description', with: ''
find('#issue_description').send_keys('1. [x] First item')
find('#issue_description').send_keys(:enter)
assert_equal(
"1. [x] First item\n" \
"2. [ ] ",
find('#issue_description').value
)
end
end
end
def test_textile_nested_list_autofill
with_settings :text_formatting => 'textile' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('* Parent item')
find('#issue_description').send_keys(:enter)
find('#issue_description').send_keys(:backspace, :backspace) # Remove auto-filled marker
find('#issue_description').send_keys('** Child item')
find('#issue_description').send_keys(:enter)
find('#issue_description').send_keys(:backspace, :backspace, :backspace) # Remove auto-filled marker
find('#issue_description').send_keys("*** Grandchild item")
find('#issue_description').send_keys(:enter)
assert_equal(
"* Parent item\n" \
"** Child item\n" \
"*** Grandchild item\n" \
"*** ",
find('#issue_description').value
)
end
end
end
def test_common_mark_nested_list_autofill
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('- Parent item')
find('#issue_description').send_keys(:enter)
find('#issue_description').send_keys(:backspace, :backspace) # Remove auto-filled marker
find('#issue_description').send_keys(' - Child item')
find('#issue_description').send_keys(:enter)
assert_equal(
"- Parent item\n" \
" - Child item\n" \
" - ",
find('#issue_description').value
)
find('#issue_description').send_keys(:backspace, :backspace, :backspace, :backspace) # Remove auto-filled marker
find('#issue_description').send_keys(' - Grandchild item')
find('#issue_description').send_keys(:enter)
assert_equal(
"- Parent item\n" \
" - Child item\n" \
" - Grandchild item\n" \
" - ",
find('#issue_description').value
)
end
end
end
def test_common_mark_mixed_list_types
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').send_keys('1. First numbered item')
find('#issue_description').send_keys(:enter)
find('#issue_description').send_keys(:backspace, :backspace, :backspace) # Remove auto-filled numbered list marker
find('#issue_description').send_keys(' - Nested bullet item')
find('#issue_description').send_keys(:enter)
assert_equal(
"1. First numbered item\n" \
" - Nested bullet item\n" \
" - ",
find('#issue_description').value
)
find('#issue_description').send_keys(:backspace, :backspace, :backspace, :backspace, :backspace) # Remove auto-filled numbered list marker
find('#issue_description').send_keys('2. Second numbered item')
find('#issue_description').send_keys(:enter)
assert_equal(
"1. First numbered item\n" \
" - Nested bullet item\n" \
"2. Second numbered item\n" \
"3. ",
find('#issue_description').value
)
end
end
end
def test_remove_list_marker_with_single_halfwidth_space_variants
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').click
# Half-width space only → should remove marker
find('#issue_description').send_keys('1. First item', :enter)
assert_equal("1. First item\n2. ", find('#issue_description').value)
find('#issue_description').send_keys(:enter)
assert_equal("1. First item\n", find('#issue_description').value)
fill_in 'Description', with: ''
# Full-width space only → should NOT remove marker
find('#issue_description').send_keys('1. First item', :enter)
find('#issue_description').send_keys(:backspace, :backspace, :backspace)
find('#issue_description').send_keys("2. ", :enter)
assert_equal("1. First item\n2. \n", find('#issue_description').value)
fill_in 'Description', with: ''
# Two or more spaces → should NOT remove marker
find('#issue_description').send_keys('1. First item', :enter)
find('#issue_description').send_keys(:backspace, :backspace, :backspace)
find('#issue_description').send_keys("2. ", :enter)
assert_equal("1. First item\n2. \n3. ", find('#issue_description').value)
end
end
end
def test_no_autofill_when_content_is_missing_or_invalid_marker
with_settings :text_formatting => 'common_mark' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').click
# Marker only with no content → should not trigger insert
find('#issue_description').send_keys('1.', :enter)
assert_equal("1.\n", find('#issue_description').value)
fill_in 'Description', with: ''
# Invalid marker pattern (e.g. double dot) → should not trigger insert
find('#issue_description').send_keys('1.. Invalid marker', :enter)
assert_equal("1.. Invalid marker\n", find('#issue_description').value)
end
end
end
def test_autofill_ignored_with_none_text_formatting
with_settings :text_formatting => '' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').click
# Unsupported format → no autofill should occur
find('#issue_description').send_keys('* First item', :enter)
assert_equal("* First item\n", find('#issue_description').value)
end
end
end
def test_marker_not_inserted_on_empty_line
with_settings :text_formatting => 'textile' do
visit '/projects/ecookbook/issues/new'
within('form#issue-form') do
find('#issue_description').click
# Pressing enter on an empty line → should not trigger insert
find('#issue_description').send_keys(:enter)
assert_equal("\n", find('#issue_description').value)
end
end
end
end