Files
Redmine/test/system/list_autofill_test.rb

352 lines
11 KiB
Ruby
Raw Normal View History

# 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