gitlab-org--gitlab-foss/spec/lib/banzai/filter/task_list_filter_spec.rb

48 lines
1.8 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Banzai::Filter::TaskListFilter do
include FilterSpecHelper
it 'adds `<task-button></task-button>` to every list item' do
doc = filter("<ul data-sourcepos=\"1:1-2:20\">\n<li data-sourcepos=\"1:1-1:20\">[ ] testing item 1</li>\n<li data-sourcepos=\"2:1-2:20\">[x] testing item 2</li>\n</ul>")
expect(doc.xpath('.//li//task-button').count).to eq(2)
end
describe 'inapplicable list items' do
shared_examples 'a valid inapplicable task list item' do |html|
it "behaves correctly for `#{html}`" do
doc = filter("<ul><li>#{html}</li></ul>")
expect(doc.css('li.inapplicable input[data-inapplicable]').count).to eq(1)
expect(doc.css('li.inapplicable > s').count).to eq(1)
end
end
shared_examples 'an invalid inapplicable task list item' do |html|
it "does nothing for `#{html}`" do
doc = filter("<ul><li>#{html}</li></ul>")
expect(doc.css('li.inapplicable input[data-inapplicable]').count).to eq(0)
end
end
it_behaves_like 'a valid inapplicable task list item', '[~] foobar'
it_behaves_like 'a valid inapplicable task list item', '[~] foo <em>bar</em>'
it_behaves_like 'an invalid inapplicable task list item', '[ ] foobar'
it_behaves_like 'an invalid inapplicable task list item', '[x] foobar'
it_behaves_like 'an invalid inapplicable task list item', 'foo [~] bar'
it 'does not wrap a sublist with <s>' do
html = '[~] foo <em>bar</em>\n<ol><li>sublist</li></ol>'
doc = filter("<ul><li>#{html}</li></ul>")
expect(doc.to_html).to include('<s>foo <em>bar</em>\n</s>')
expect(doc.css('li.inapplicable input[data-inapplicable]').count).to eq(1)
expect(doc.css('li.inapplicable > s').count).to eq(1)
end
end
end