# frozen_string_literal: true require 'test_helper' class TestVariousTocHtml < Minitest::Test # ref. https://github.com/toshimaru/jekyll-toc/issues/45 ANGLE_BRACKET_HTML = <<-HTML

h1

<base href>

& < >

HTML NO_TOC_HTML = <<-HTML

h1

no_toc h1

h2

no_toc h2

h3

no_toc h3

h4

no_toc h4

HTML JAPANESE_HEADINGS_HTML = <<-HTML

HTML TAGS_INSIDE_HEADINGS_HTML = <<-HTML

h2

h2

HTML TEST_HTML_1 = <<-HTML

h1

h3

h6
HTML TEST_HTML_2 = <<-HTML

h1

h3

h2

h6
HTML TEST_HTML_3 = <<-HTML
h6
h5

h4

h3

h2

h1

HTML TEST_HTML_4 = <<-HTML

h1

h3

h2

h4

h5
HTML def test_nested_toc parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_1) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end def test_nested_toc_with_min_and_max parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_1, { "min_level" => 2, "max_level" => 5 }) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end def test_complex_nested_toc parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_2) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end def test_decremental_headings1 parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_3) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end def test_decremental_headings2 parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_4) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML assert_equal(expected, doc.css('ul.section-nav').to_s) end def test_no_toc parser = Jekyll::TableOfContents::Parser.new(NO_TOC_HTML) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end def test_japanese_toc parser = Jekyll::TableOfContents::Parser.new(JAPANESE_HEADINGS_HTML) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end def test_angle_bracket parser = Jekyll::TableOfContents::Parser.new(ANGLE_BRACKET_HTML) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end def test_tags_inside_heading parser = Jekyll::TableOfContents::Parser.new(TAGS_INSIDE_HEADINGS_HTML) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end TEST_HTML_IGNORE = <<-HTML

h1

h2

h3

h4

h5

h6
HTML def test_nested_toc_with_ignore_within_option parser = Jekyll::TableOfContents::Parser.new(TEST_HTML_IGNORE, { "ignore_within" => '.exclude'}) doc = Nokogiri::HTML(parser.toc) expected = <<-HTML HTML actual = doc.css('ul.section-nav').to_s assert_equal(expected, actual) end end