summaryrefslogtreecommitdiff
path: root/spec/services/task_list_toggle_service_spec.rb
diff options
context:
space:
mode:
authorBrett Walker <bwalker@gitlab.com>2019-01-29 13:10:36 -0600
committerFatih Acet <acetfatih@gmail.com>2019-01-30 23:18:21 +0100
commit19dc2fb082ebeb8c1874f59282eead8a8e05fb35 (patch)
tree292e8296735d198907b372b194138382be848691 /spec/services/task_list_toggle_service_spec.rb
parent58cd21c2ad802c1652311f025c599e0df604669c (diff)
downloadgitlab-ce-19dc2fb082ebeb8c1874f59282eead8a8e05fb35.tar.gz
Fix TaskListToggleService specs
Diffstat (limited to 'spec/services/task_list_toggle_service_spec.rb')
-rw-r--r--spec/services/task_list_toggle_service_spec.rb121
1 files changed, 81 insertions, 40 deletions
diff --git a/spec/services/task_list_toggle_service_spec.rb b/spec/services/task_list_toggle_service_spec.rb
index 8ae0e209cda..6b92d4e14d0 100644
--- a/spec/services/task_list_toggle_service_spec.rb
+++ b/spec/services/task_list_toggle_service_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe TaskListToggleService do
context 'when ' do
+ let(:sourcepos) { true }
let(:markdown) do
<<-EOT.strip_heredoc
* [ ] Task 1
@@ -18,20 +19,20 @@ describe TaskListToggleService do
let(:markdown_html) do
<<-EOT.strip_heredoc
- <ul class="task-list" dir="auto">
- <li class="task-list-item">
+ <ul data-sourcepos="1:1-3:0" class="task-list" dir="auto">
+ <li data-sourcepos="1:1-1:12" class="task-list-item">
<input type="checkbox" class="task-list-item-checkbox" disabled> Task 1
</li>
- <li class="task-list-item">
+ <li data-sourcepos="2:1-3:0" class="task-list-item">
<input type="checkbox" class="task-list-item-checkbox" disabled checked> Task 2
</li>
</ul>
- <p dir="auto">A paragraph</p>
- <ol class="task-list" dir="auto">
- <li class="task-list-item">
+ <p data-sourcepos="4:1-4:11" dir="auto">A paragraph</p>
+ <ol data-sourcepos="6:1-7:19" class="task-list" dir="auto">
+ <li data-sourcepos="6:1-7:19" class="task-list-item">
<input type="checkbox" class="task-list-item-checkbox" disabled checked> Item 1
- <ul class="task-list">
- <li class="task-list-item">
+ <ul data-sourcepos="7:4-7:19" class="task-list">
+ <li data-sourcepos="7:4-7:19" class="task-list-item">
<input type="checkbox" class="task-list-item-checkbox" disabled> Sub-item 1
</li>
</ul>
@@ -40,48 +41,88 @@ describe TaskListToggleService do
EOT
end
- it 'checks Task 1' do
- toggler = described_class.new(markdown, markdown_html,
- index: 1, currently_checked: false,
- line_source: '* [ ] Task 1', line_number: 1)
+ shared_examples 'task lists' do
+ it 'checks Task 1' do
+ toggler = described_class.new(markdown, markdown_html,
+ index: 1, toggle_as_checked: true,
+ line_source: '* [ ] Task 1', line_number: 1,
+ sourcepos: sourcepos)
- 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
+ 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 'unchecks Item 1' do
- toggler = described_class.new(markdown, markdown_html,
- index: 3, currently_checked: true,
- line_source: '1. [X] Item 1', line_number: 6)
+ it 'unchecks Item 1' do
+ toggler = described_class.new(markdown, markdown_html,
+ index: 3, toggle_as_checked: false,
+ line_source: '1. [X] Item 1', line_number: 6,
+ sourcepos: sourcepos)
- expect(toggler.execute).to be_truthy
- expect(toggler.updated_markdown.lines[5]).to eq "1. [ ] Item 1\n"
- expect(toggler.updated_markdown_html).to include('disabled> Item 1')
- end
+ expect(toggler.execute).to be_truthy
+ expect(toggler.updated_markdown.lines[5]).to eq "1. [ ] Item 1\n"
+ expect(toggler.updated_markdown_html).to include('disabled> Item 1')
+ end
- it 'returns false if line_source does not match the text' do
- toggler = described_class.new(markdown, markdown_html,
- index: 2, currently_checked: true,
- line_source: '* [x] Task Added', line_number: 2)
+ it 'returns false if line_source does not match the text' do
+ toggler = described_class.new(markdown, markdown_html,
+ index: 2, toggle_as_checked: false,
+ line_source: '* [x] Task Added', line_number: 2,
+ sourcepos: sourcepos)
- expect(toggler.execute).to be_falsey
- end
+ expect(toggler.execute).to be_falsey
+ end
+
+ it 'returns false if markdown is nil' do
+ toggler = described_class.new(nil, markdown_html,
+ index: 2, toggle_as_checked: false,
+ line_source: '* [x] Task Added', line_number: 2,
+ sourcepos: sourcepos)
+
+ expect(toggler.execute).to be_falsey
+ end
- it 'returns false if markdown is nil' do
- toggler = described_class.new(nil, markdown_html,
- index: 2, currently_checked: true,
- line_source: '* [x] Task Added', line_number: 2)
+ it 'returns false if markdown_html is nil' do
+ toggler = described_class.new(markdown, nil,
+ index: 2, toggle_as_checked: false,
+ line_source: '* [x] Task Added', line_number: 2,
+ sourcepos: sourcepos)
- expect(toggler.execute).to be_falsey
+ expect(toggler.execute).to be_falsey
+ end
end
- it 'returns false if markdown_html is nil' do
- toggler = described_class.new(markdown, nil,
- index: 2, currently_checked: true,
- line_source: '* [x] Task Added', line_number: 2)
+ context 'when using sourcepos' do
+ it_behaves_like 'task lists'
+ end
+
+ context 'when using checkbox indexing' do
+ let(:sourcepos) { false }
+ let(:markdown_html) do
+ <<-EOT.strip_heredoc
+ <ul class="task-list" dir="auto">
+ <li class="task-list-item">
+ <input type="checkbox" class="task-list-item-checkbox" disabled> Task 1
+ </li>
+ <li class="task-list-item">
+ <input type="checkbox" class="task-list-item-checkbox" disabled checked> Task 2
+ </li>
+ </ul>
+ <p dir="auto">A paragraph</p>
+ <ol class="task-list" dir="auto">
+ <li class="task-list-item">
+ <input type="checkbox" class="task-list-item-checkbox" disabled checked> Item 1
+ <ul class="task-list">
+ <li class="task-list-item">
+ <input type="checkbox" class="task-list-item-checkbox" disabled> Sub-item 1
+ </li>
+ </ul>
+ </li>
+ </ol>
+ EOT
+ end
- expect(toggler.execute).to be_falsey
+ it_behaves_like 'task lists'
end
end
end