require File.expand_path(File.join(File.dirname(__FILE__), '..', "helper")) require File.join(File.dirname(__FILE__),"load_files") class TestPreserved < Nokogiri::TestCase def assert_roundtrip str doc = Nokogiri.Hpricot(str) yield doc if block_given? str2 = doc.to_original_html [*str].zip([*str2]).each do |s1, s2| assert_equal s1, s2 end end def assert_html str1, str2 doc = Nokogiri.Hpricot(str2) yield doc if block_given? assert_equal str1, doc.to_original_html end #### # Not supporting to_original_html #def test_simple # str = "

Hpricot is a you know uh fine thing.

" # assert_html str, str # assert_html "

Hpricot is a you know uh fine thing.

", str do |doc| # (doc/:p).set('class', 'new') # end #end #### # Not supporting to_original_html #def test_parent # str = "Test

Paragraph one.

Paragraph two.

" # assert_html str, str # assert_html "

Paragraph one.

Paragraph two.

", str do |doc| # (doc/:head).remove # (doc/:div).set('id', 'all') # (doc/:p).wrap('
') # end #end # Not really a valid test. If libxml can figure out the encoding of the file, # it will use that encoding, otherwise it uses the &#xwhatever so that no data # is lost. # # libxml on OSX can't figure out the encoding, so this tests passes. linux # can figure out the encoding, so it fails. #def test_escaping_of_contents # doc = Nokogiri.Hpricot(TestFiles::BOINGBOING) # assert_equal "Fukuda’s Automatic Door opens around your body as you pass through it. The idea is to save energy and keep the room clean.", doc.at("img[@alt='200606131240']").next.to_s.strip #end #### # Modified. No. #def test_files # assert_roundtrip TestFiles::BASIC # assert_roundtrip TestFiles::BOINGBOING # assert_roundtrip TestFiles::CY0 #end #### # Modified.. When calling "to_html" on the document, proper html/doc tags # are produced too. def test_escaping_of_attrs # ampersands in URLs str = %{Google} link = (doc = Nokogiri(str)).at(:a) assert_equal "http://google.com/search?q=nokogiri&l=en", link['href'] assert_equal "http://google.com/search?q=nokogiri&l=en", link.get_attribute('href') assert_equal "http://google.com/search?q=nokogiri&l=en", link['href'] assert_equal str, link.to_html # alter the url link['href'] = "javascript:alert(\"AGGA-KA-BOO!\")" assert_equal %{Google}, link.to_html.gsub(/%22/, '"') end end