# frozen_string_literal: true
require "spec_helper"
describe Kitabu::TOC::HTML do
def regexp(text)
/#{Regexp.escape(text)}/
end
def input
(+<<-HTML).force_encoding("utf-8")
Item 1
Item 1.2
Item 1.1.3
Item 1.1.1.4
Item 1.1.1.1.5
Item 1.1.1.1.1.6
Item 2.1
Item 2.1 again
Internacionalização
Title
Title
HTML
end
let(:toc) { described_class.generate(input) }
let(:html) { toc.to_html }
let(:content) { toc.content }
it "returns hash" do
expect(toc.to_hash.keys).to eq(%i[content html toc])
end
it "has no body tag" do
expect(content).not_to match(//)
end
it "generates toc" do
expect(html).to have_tag("div.level1.item-1", regexp("Item 1"))
expect(html).to have_tag("div.level2.item-1-2", regexp("Item 1.2"))
expect(html).to have_tag("div.level3.item-1-1-3", regexp("Item 1.1.3"))
expect(html).to have_tag("div.level4.item-1-1-1-4", regexp("Item 1.1.1.4"))
expect(html).to have_tag("div.level5.item-1-1-1-1-5",
regexp("Item 1.1.1.1.5"))
expect(html).to have_tag("div.level6.item-1-1-1-1-1-6",
regexp("Item 1.1.1.1.1.6"))
expect(html).to have_tag("div.level2.item-2-1", regexp("Item 2.1"))
expect(html).to have_tag("div.level2.item-2-1-again",
regexp("Item 2.1 again"))
expect(html).to have_tag("div.level2.internacionalizacao",
regexp("Internacionalização"))
end
it "adds id attribute to content" do
expect(content).to have_tag("h1#item-1", regexp("Item 1"))
expect(content).to have_tag("h2#item-1-2", regexp("Item 1.2"))
expect(content).to have_tag("h3#item-1-1-3", regexp("Item 1.1.3"))
expect(content).to have_tag("h4#item-1-1-1-4", regexp("Item 1.1.1.4"))
expect(content).to have_tag("h5#item-1-1-1-1-5", regexp("Item 1.1.1.1.5"))
expect(content).to have_tag("h6#item-1-1-1-1-1-6",
regexp("Item 1.1.1.1.1.6"))
expect(content).to have_tag("h2#item-2-1", regexp("Item 2.1"))
expect(content).to have_tag("h2#item-2-1-again", regexp("Item 2.1 again"))
expect(content).to have_tag("h2#internacionalizacao",
regexp("Internacionalização"))
expect(content).to have_tag("h2#title", regexp("Title"))
expect(content).to have_tag("h2#title-2", regexp("Title"))
end
end