require "spec"
require "xml"
describe XML do
it "parses HTML" do
doc = XML.parse_html(%(\
Samantha
Boat
))
html = doc.children[1]
html.name.should eq("html")
head = html.children.find! { |node| node.name == "head" }
head.name.should eq("head")
title = head.children.find! { |node| node.name == "title" }
title.text.should eq("Samantha")
body = html.children.find! { |node| node.name == "body" }
h1 = body.children.find! { |node| node.name == "h1" }
attrs = h1.attributes
attrs.should_not be_empty
attrs.size.should eq(1)
attr = attrs[0]
attr.name.should eq("class")
attr.content.should eq("large")
attr.text.should eq("large")
attr.inner_text.should eq("large")
end
it "parses HTML from IO" do
io = IO::Memory.new(%(\
Samantha
Boat
))
doc = XML.parse_html(io)
html = doc.children[1]
html.name.should eq("html")
end
it "parses html5 (#1404)" do
html5 = ""
xml = XML.parse_html(html5)
xml.xpath_node("//html/body/nav").should_not be_nil
end
it "raises error when parsing empty string (#2752)" do
expect_raises XML::Error, "Document is empty" do
XML.parse_html("")
end
end
it "gets name of HTML document node (#4040)" do
doc = XML.parse_html(%(\
))
doc.document?.should be_true
doc.name.should eq("document")
end
end