diff options
Diffstat (limited to 'spec/lib/banzai/filter/footnote_filter_spec.rb')
-rw-r--r-- | spec/lib/banzai/filter/footnote_filter_spec.rb | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/spec/lib/banzai/filter/footnote_filter_spec.rb b/spec/lib/banzai/filter/footnote_filter_spec.rb index 54faa748d53..d41f5e8633d 100644 --- a/spec/lib/banzai/filter/footnote_filter_spec.rb +++ b/spec/lib/banzai/filter/footnote_filter_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe Banzai::Filter::FootnoteFilter do include FilterSpecHelper + using RSpec::Parameterized::TableSyntax # rubocop:disable Style/AsciiComments # first[^1] and second[^second] and third[^_😄_] @@ -13,16 +14,16 @@ RSpec.describe Banzai::Filter::FootnoteFilter do # rubocop:enable Style/AsciiComments let(:footnote) do <<~EOF.strip_heredoc - <p>first<sup><a href="#fn-1" id="fnref-1">1</a></sup> and second<sup><a href="#fn-second" id="fnref-second">2</a></sup> and third<sup><a href="#fn-_%F0%9F%98%84_" id="fnref-_%F0%9F%98%84_">3</a></sup></p> - + <p>first<sup><a href="#fn-1" id="fnref-1" data-footnote-ref>1</a></sup> and second<sup><a href="#fn-second" id="fnref-second" data-footnote-ref>2</a></sup> and third<sup><a href="#fn-_%F0%9F%98%84_" id="fnref-_%F0%9F%98%84_" data-footnote-ref>3</a></sup></p> + <section data-footnotes> <ol> <li id="fn-1"> - <p>one <a href="#fnref-1" aria-label="Back to content">↩</a></p> + <p>one <a href="#fnref-1" aria-label="Back to content" data-footnote-backref>↩</a></p> </li> <li id="fn-second"> - <p>two <a href="#fnref-second" aria-label="Back to content">↩</a></p> + <p>two <a href="#fnref-second" aria-label="Back to content" data-footnote-backref>↩</a></p> </li>\n<li id="fn-_%F0%9F%98%84_"> - <p>three <a href="#fnref-_%F0%9F%98%84_" aria-label="Back to content">↩</a></p> + <p>three <a href="#fnref-_%F0%9F%98%84_" aria-label="Back to content" data-footnote-backref>↩</a></p> </li> </ol> EOF @@ -30,19 +31,20 @@ RSpec.describe Banzai::Filter::FootnoteFilter do let(:filtered_footnote) do <<~EOF.strip_heredoc - <p>first<sup class="footnote-ref"><a href="#fn-1-#{identifier}" id="fnref-1-#{identifier}" data-footnote-ref="">1</a></sup> and second<sup class="footnote-ref"><a href="#fn-second-#{identifier}" id="fnref-second-#{identifier}" data-footnote-ref="">2</a></sup> and third<sup class="footnote-ref"><a href="#fn-_%F0%9F%98%84_-#{identifier}" id="fnref-_%F0%9F%98%84_-#{identifier}" data-footnote-ref="">3</a></sup></p> - - <section class=\"footnotes\" data-footnotes><ol> + <p>first<sup class="footnote-ref"><a href="#fn-1-#{identifier}" id="fnref-1-#{identifier}" data-footnote-ref>1</a></sup> and second<sup class="footnote-ref"><a href="#fn-second-#{identifier}" id="fnref-second-#{identifier}" data-footnote-ref>2</a></sup> and third<sup class="footnote-ref"><a href="#fn-_%F0%9F%98%84_-#{identifier}" id="fnref-_%F0%9F%98%84_-#{identifier}" data-footnote-ref>3</a></sup></p> + <section data-footnotes class=\"footnotes\"> + <ol> <li id="fn-1-#{identifier}"> - <p>one <a href="#fnref-1-#{identifier}" aria-label="Back to content" class="footnote-backref" data-footnote-backref="">↩</a></p> + <p>one <a href="#fnref-1-#{identifier}" aria-label="Back to content" data-footnote-backref class="footnote-backref">↩</a></p> </li> <li id="fn-second-#{identifier}"> - <p>two <a href="#fnref-second-#{identifier}" aria-label="Back to content" class="footnote-backref" data-footnote-backref="">↩</a></p> + <p>two <a href="#fnref-second-#{identifier}" aria-label="Back to content" data-footnote-backref class="footnote-backref">↩</a></p> </li> <li id="fn-_%F0%9F%98%84_-#{identifier}"> - <p>three <a href="#fnref-_%F0%9F%98%84_-#{identifier}" aria-label="Back to content" class="footnote-backref" data-footnote-backref="">↩</a></p> + <p>three <a href="#fnref-_%F0%9F%98%84_-#{identifier}" aria-label="Back to content" data-footnote-backref class="footnote-backref">↩</a></p> </li> - </ol></section> + </ol> + </section> EOF end @@ -52,7 +54,7 @@ RSpec.describe Banzai::Filter::FootnoteFilter do let(:identifier) { link_node[:id].delete_prefix('fnref-1-') } it 'properly adds the necessary ids and classes' do - expect(doc.to_html).to eq filtered_footnote + expect(doc.to_html).to eq filtered_footnote.strip end context 'using ruby-based HTML renderer' do @@ -101,4 +103,21 @@ RSpec.describe Banzai::Filter::FootnoteFilter do end end end + + context 'when detecting footnotes' do + where(:valid, :markdown) do + true | "1. one[^1]\n[^1]: AbC" + true | "1. one[^abc]\n[^abc]: AbC" + false | '1. [one](#fnref-abc)' + false | "1. one[^1]\n[^abc]: AbC" + end + + with_them do + it 'detects valid footnotes' do + result = Banzai::Pipeline::FullPipeline.call(markdown, project: nil) + + expect(result[:output].at_css('section.footnotes').present?).to eq(valid) + end + end + end end |