Commit 65b16f98 authored by Douwe Maan's avatar Douwe Maan

Merge branch '64697-markdown-issues-checkbox-inside-blockquote-status-won-t-be-saved' into 'master'

Markdown issues: Checkbox inside blockquote status won't be saved

See merge request gitlab-org/gitlab-ce!30952
parents b17e7e1b b1694896
Pipeline #72212820 passed with stages
in 68 minutes and 58 seconds
......@@ -15,7 +15,8 @@ module Taskable
INCOMPLETE_PATTERN = /(\[[\s]\])/.freeze
ITEM_PATTERN = %r{
^
\s*(?:[-+*]|(?:\d+\.)) # list prefix required - task item has to be always in a list
(?:(?:>\s{0,4})*) # optional blockquote characters
\s*(?:[-+*]|(?:\d+\.)) # list prefix required - task item has to be always in a list
\s+ # whitespace prefix has to be always presented for a list item
(\[\s\]|\[[xX]\]) # checkbox
(\s.+) # followed by whitespace and some text.
......
---
title: Better support clickable tasklists inside blockquotes
merge_request: 30952
author:
type: fixed
......@@ -114,6 +114,23 @@ describe TaskListToggleService do
expect(toggler.execute).to be_falsey
end
it 'properly handles tasks in a blockquote' do
markdown =
<<-EOT.strip_heredoc
> > * [ ] Task 1
> * [x] Task 2
EOT
markdown_html = Banzai::Pipeline::FullPipeline.call(markdown, project: nil)[:output].to_html
toggler = described_class.new(markdown, markdown_html,
toggle_as_checked: true,
line_source: '> > * [ ] Task 1', line_number: 1)
expect(toggler.execute).to be_truthy
expect(toggler.updated_markdown.lines[0]).to eq "> > * [x] Task 1\n"
expect(toggler.updated_markdown_html).to include('disabled checked> Task 1')
end
it 'properly handles a GitLab blockquote' do
markdown =
<<-EOT.strip_heredoc
......
......@@ -105,4 +105,25 @@ shared_examples 'a Taskable' do
expect(subject.task_status_short).to match('1 task')
end
end
describe 'with tasks in blockquotes' do
before do
subject.description = <<-EOT.strip_heredoc
> - [ ] Task a
> > - [x] Task a.1
>>>
1. [ ] Task 1
1. [x] Task 2
>>>
EOT
end
it 'returns the correct task status' do
expect(subject.task_status).to match('2 of')
expect(subject.task_status).to match('4 tasks completed')
expect(subject.task_status_short).to match('2/')
expect(subject.task_status_short).to match('4 tasks')
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