From 04d2cbcc2cd1225c6f001675545738c38616e284 Mon Sep 17 00:00:00 2001 From: Johan Brook Date: Thu, 19 Jun 2014 18:25:55 +0200 Subject: [PATCH] Add tests for ignore elements --- test/files/ignore.css | 3 ++ test/files/ignore.html | 15 ++++++++++ test/test_premailer.rb | 62 ++++++++++++++++++++++++++---------------- 3 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 test/files/ignore.css create mode 100644 test/files/ignore.html diff --git a/test/files/ignore.css b/test/files/ignore.css new file mode 100644 index 00000000..7f69ee73 --- /dev/null +++ b/test/files/ignore.css @@ -0,0 +1,3 @@ +body { + color: orange; +} diff --git a/test/files/ignore.html b/test/files/ignore.html new file mode 100644 index 00000000..279a5aad --- /dev/null +++ b/test/files/ignore.html @@ -0,0 +1,15 @@ + + + + Should ignore link and style elements with data attribute + + + + +

Content

+ + diff --git a/test/test_premailer.rb b/test/test_premailer.rb index b8e84579..e51f9190 100644 --- a/test/test_premailer.rb +++ b/test/test_premailer.rb @@ -17,7 +17,7 @@ def test_special_characters_nokogiri_remote end #def test_cyrillic_nokogiri_remote - # if RUBY_VERSION =~ /1.9/ + # if RUBY_VERSION =~ /1.9/ # remote_setup('iso-8859-5.html', :adapter => :nokogiri) #, :encoding => 'iso-8859-5') # @premailer.to_inline_css # assert_equal Encoding.find('ISO-8859-5'), @premailer.processed_doc.at('p').inner_html.encoding @@ -32,7 +32,7 @@ def test_special_characters_hpricot premailer.to_inline_css assert_equal 'cédille cé & garçon garçon à à   &', premailer.processed_doc.at('p').inner_html end - + def test_detecting_html [:nokogiri, :hpricot].each do |adapter| remote_setup('base.html', :adapter => adapter) @@ -62,7 +62,7 @@ def test_non_self_closing_html_tags assert_match /
/, @premailer.to_inline_css end end - + def test_mailtos_with_query_strings html = < @@ -75,17 +75,33 @@ def test_mailtos_with_query_strings [:nokogiri, :hpricot].each do |adapter| premailer = Premailer.new(html, :with_html_string => true, :link_query_string => qs, :adapter => adapter) premailer.to_inline_css - assert_no_match /testing=123/, premailer.processed_doc.search('a').first.attributes['href'].to_s + assert_no_match /testing=123/, premailer.processed_doc.search('a').first.attributes['href'].to_s end end - + def test_escaping_strings local_setup - + str = %q{url("/images/test.png");} assert_equal("url(\'/images/test.png\');", Premailer.escape_string(str)) end - + + def test_preserving_ignored_style_elements + [:nokogiri, :hpricot].each do |adapter| + local_setup('ignore.html', :adapter => adapter) + + assert_nil @doc.at('h1')['style'] + end + end + + def test_preserving_ignored_link_elements + [:nokogiri, :hpricot].each do |adapter| + local_setup('ignore.html', :adapter => adapter) + + assert_nil @doc.at('body')['style'] + end + end + def test_importing_local_css # , :hpricot [:nokogiri].each do |adapter| @@ -93,8 +109,8 @@ def test_importing_local_css # noimport.css (print stylesheet) sets body { background } to red assert_no_match /red/, @doc.at('body').attributes['style'].to_s - - # import.css sets .hide to { display: none } + + # import.css sets .hide to { display: none } assert_match /display: none/, @doc.at('#hide01').attributes['style'].to_s end end @@ -102,11 +118,11 @@ def test_importing_local_css def test_importing_remote_css [:nokogiri, :hpricot].each do |adapter| remote_setup('base.html', :adapter => adapter) - + # noimport.css (print stylesheet) sets body { background } to red assert_no_match /red/, @doc.at('body')['style'] - - # import.css sets .hide to { display: none } + + # import.css sets .hide to { display: none } assert_match /display: none/, @doc.at('#hide01')['style'] end end @@ -130,12 +146,12 @@ def test_local_remote_check assert Premailer.local_data?( StringIO.new('a') ) assert Premailer.local_data?( '/path/' ) assert !Premailer.local_data?( 'http://example.com/path/' ) - + # the old way is deprecated but should still work premailer = Premailer.new( StringIO.new('a') ) assert premailer.local_uri?( '/path/' ) end - + def test_initialize_can_accept_io_object [:nokogiri, :hpricot].each do |adapter| io = StringIO.new('hi mom') @@ -143,14 +159,14 @@ def test_initialize_can_accept_io_object assert_match /hi mom/, premailer.to_inline_css end end - + def test_initialize_can_accept_html_string [:nokogiri, :hpricot].each do |adapter| premailer = Premailer.new('

test

', :with_html_string => true, :adapter => adapter) assert_match /test/, premailer.to_inline_css end end - + def test_initialize_no_escape_attributes_option html = < @@ -167,12 +183,12 @@ def test_initialize_no_escape_attributes_option assert_equal doc.at('#noescape')['href'], '{{link_url}}' end end - + def test_remove_ids html = < -

Test

+

Test

Test

END_HTML @@ -187,7 +203,7 @@ def test_remove_ids assert_not_nil doc.at("\##{hashed_id}") end end - + def test_carriage_returns_as_entities html = <<-html @@ -201,14 +217,14 @@ def test_carriage_returns_as_entities assert_match /\r/, pm.to_inline_css end end - - + + def test_advanced_selectors remote_setup('base.html', :adapter => :nokogiri) assert_match /italic/, @doc.at('h2 + h3')['style'] assert_match /italic/, @doc.at('p[attr~=quote]')['style'] assert_match /italic/, @doc.at('ul li:first-of-type')['style'] - + remote_setup('base.html', :adapter => :hpricot) assert_match /italic/, @doc.at('p[@attr~="quote"]')['style'] assert_match /italic/, @doc.at('ul li:first-of-type')['style'] @@ -294,7 +310,7 @@ def test_htmlentities def test_line_starting_with_uri_in_html_with_linked_css files_base = File.expand_path(File.dirname(__FILE__)) + '/files/' html_string = IO.read(File.join(files_base, 'html_with_uri.html')) - + assert_nothing_raised do premailer = Premailer.new(html_string, :with_html_string => true) premailer.to_inline_css