require 'test_helper' module HtmlCompressor class TestCompressor < Minitest::Test def test_enabled source = read_resource("testEnabled.html") result = read_resource("testEnabledResult.html") compressor = Compressor.new(:enabled => false) assert_equal result, compressor.compress(source) end def test_remove_spaces_inside_tags source = read_resource("testRemoveSpacesInsideTags.html") result = read_resource("testRemoveSpacesInsideTagsResult.html") compressor = Compressor.new(:remove_multi_spaces => false) assert_equal result, compressor.compress(source) end def test_remove_spaces_inside_tags_disabled source = read_resource("testRemoveSpacesInsideTags.html") result = read_resource("testRemoveSpacesInsideTagsDisabledResult.html") compressor = Compressor.new(:remove_multi_spaces => false, :remove_spaces_inside_tags => false) assert_equal result, compressor.compress(source) end def test_remove_comments source = read_resource("testRemoveComments.html") result = read_resource("testRemoveCommentsResult.html") compressor = Compressor.new(:remove_comments => true, :remove_intertag_spaces => true) assert_equal result, compressor.compress(source) end def test_remove_quotes source = read_resource("testRemoveQuotes.html") result = read_resource("testRemoveQuotesResult.html") compressor = Compressor.new(:remove_quotes => true) assert_equal result, compressor.compress(source) end def test_remove_multi_spaces source = read_resource("testRemoveMultiSpaces.html") result = read_resource("testRemoveMultiSpacesResult.html") compressor = Compressor.new(:remove_multi_spaces => true) assert_equal result, compressor.compress(source) end def test_remove_intertag_spaces source = read_resource("testRemoveIntertagSpaces.html") result = read_resource("testRemoveIntertagSpacesResult.html") compressor = Compressor.new(:remove_intertag_spaces => true) assert_equal result, compressor.compress(source) end def test_preserve_patterns source = read_resource("testPreservePatterns.html") result = read_resource("testPreservePatternsResult.html") preservePatterns = [ Compressor::PHP_TAG_PATTERN, # blocks Compressor::SERVER_SCRIPT_TAG_PATTERN, # <% ... %> blocks Compressor::SERVER_SIDE_INCLUDE_PATTERN, # blocks Regexp.new("", Regexp::MULTILINE | Regexp::IGNORECASE) # tags ] compressor = Compressor.new( :preserve_patterns => preservePatterns, :remove_comments => true, :remove_intertag_spaces => true ) assert_equal result, compressor.compress(source) end def test_compress source = read_resource("testCompress.html") result = read_resource("testCompressResult.html") compressor = Compressor.new(:compress_js_templates => true) assert_equal result, compressor.compress(source) end def test_simple_doctype source = read_resource("testSimpleDoctype.html") result = read_resource("testSimpleDoctypeResult.html") compressor = Compressor.new(:simple_doctype => true) assert_equal result, compressor.compress(source) end def test_remove_script_attributes source = read_resource("testRemoveScriptAttributes.html") result = read_resource("testRemoveScriptAttributesResult.html") compressor = Compressor.new(:remove_script_attributes => true) assert_equal result, compressor.compress(source) end def test_remove_style_attributes source = read_resource("testRemoveStyleAttributes.html") result = read_resource("testRemoveStyleAttributesResult.html") compressor = Compressor.new(:remove_style_attributes => true) assert_equal result, compressor.compress(source) end def test_remove_link_attributes source = read_resource("testRemoveLinkAttributes.html") result = read_resource("testRemoveLinkAttributesResult.html") compressor = Compressor.new(:remove_link_attributes => true) assert_equal result, compressor.compress(source) end def test_remove_form_attributes source = read_resource("testRemoveFormAttributes.html") result = read_resource("testRemoveFormAttributesResult.html") compressor = Compressor.new(:remove_form_attributes => true) assert_equal result, compressor.compress(source) end def test_remove_input_attributes source = read_resource("testRemoveInputAttributes.html") result = read_resource("testRemoveInputAttributesResult.html") compressor = Compressor.new(:remove_input_attributes => true) assert_equal result, compressor.compress(source) end def test_remove_javascript_protocol source = read_resource("testRemoveJavaScriptProtocol.html") result = read_resource("testRemoveJavaScriptProtocolResult.html") compressor = Compressor.new(:remove_javascript_protocol => true) assert_equal result, compressor.compress(source) end def test_remove_http_protocol source = read_resource("testRemoveHttpProtocol.html") result = read_resource("testRemoveHttpProtocolResult.html") compressor = Compressor.new(:remove_http_protocol => true) assert_equal result, compressor.compress(source) end def test_remove_https_protocol source = read_resource("testRemoveHttpsProtocol.html") result = read_resource("testRemoveHttpsProtocolResult.html") compressor = Compressor.new(:remove_https_protocol => true) assert_equal result, compressor.compress(source) end def test_preserve_line_breaks source = read_resource("testPreserveLineBreaks.html") result = read_resource("testPreserveLineBreaksResult.html") compressor = Compressor.new(:preserve_line_breaks => true) assert_equal result, compressor.compress(source) end def test_remove_surrounding_spaces source = read_resource("testSurroundingSpaces.html") result = read_resource("testSurroundingSpacesResult.html") compressor = Compressor.new( :remove_intertag_spaces => true, :remove_surrounding_spaces => "p,br" ) assert_equal result, compressor.compress(source) end def test_simple_boolean_attributes source = read_resource("testSimpleBooleanAttributes.html") result = read_resource("testSimpleBooleanAttributesResult.html") compressor = Compressor.new(:simple_boolean_attributes => true) assert_equal result, compressor.compress(source) end def test_preserve_textarea source = read_resource("testPreserveTextareas.html") result = read_resource("testPreserveTextareasResult.html") compressor = Compressor.new assert_equal result, compressor.compress(source) end def test_compress_custom_html_templates source = read_resource("testCompressCustomHtmlTemplates.html") result = read_resource("testCompressCustomHtmlTemplatesResult.html") compressor = Compressor.new(:compress_js_templates => ['text/html'], :remove_quotes => true) assert_equal result, compressor.compress(source) end def test_dont_replace_javascript_inside_js_templates source = read_resource("testCompressCustomHtmlTemplates.html") result = read_resource("testCompressCustomHtmlTemplates.html") compressor = Compressor.new(:compress_js_templates => false, :remove_quotes => true) assert_equal result, compressor.compress(source) end def test_javascript_compressor_not_found source = read_resource("testCompressJavaScript.html"); compressor = Compressor.new( :compress_javascript => true, :javascript_compressor => :not_existing_compressor, :remove_intertag_spaces => true, :compress_js_templates => true ) exception = assert_raises(NotFoundCompressorError) do compressor.compress(source) end expect_message = 'JavaScript Compressor "not_existing_compressor" not found, please check :javascript_compressor option' assert_equal(expect_message, exception.message) end def test_css_compressor_not_found source = read_resource("testCompressCss.html"); compressor = Compressor.new( :enabled => true, :compress_css => true, :css_compressor => :not_existing_compressor, :compress_javascript => false ) exception = assert_raises(NotFoundCompressorError) do compressor.compress(source) end expect_message = 'CSS Compressor "not_existing_compressor" not found, please check :css_compressor option' assert_equal(expect_message, exception.message) end end end