Feature: Minify Javascript In order reduce bytes sent to client and appease YSlow Scenario: Rendering inline js with the feature disabled Given a fixture app "minify-js-app" And a file named "config.rb" with: """ """ And the Server is running at "minify-js-app" When I go to "/inline-js.html" Then I should see: """ <script> ;(function() { this; should(); all.be(); on = { one: line }; })(); </script> <script> ;(function() { this; should(); too(); })(); </script> <script type='text/javascript'> //<!-- ;(function() { one; line(); here(); })(); //--> </script> <script type='text/html'> I'm a jQuery {{template}}. </script> """ Scenario: Rendering inline js with a passthrough minifier Given a fixture app "passthrough-app" And a file named "config.rb" with: """ module ::PassThrough def self.compress(data) data end end activate :minify_javascript, :inline => true set :js_compressor, ::PassThrough page "/inline-js.html", :layout => false """ And the Server is running at "passthrough-app" When I go to "/inline-js.html" Then I should see: """ <script> ;(function() { this; should(); all.be(); on = { one: line }; })(); </script> <script> ;(function() { this; should(); too(); })(); </script> <script type='text/javascript'> //<!-- ;(function() { one; line(); here(); })(); //--> </script> <script type='text/html'> I'm a jQuery {{template}}. </script> """ Scenario: Rendering inline css with a passthrough minifier using activate-style compressor Given a fixture app "passthrough-app" And a file named "config.rb" with: """ module ::HelloCompressor def self.compress(data) "Hello" end end activate :minify_javascript, :inline => true, :compressor => ::HelloCompressor page "/inline-js.html", :layout => false """ And the Server is running at "passthrough-app" When I go to "/inline-js.html" Then I should see: """ <script> Hello </script> <script> Hello </script> <script type='text/javascript'> //<!-- Hello //--> </script> <script type='text/html'> I'm a jQuery {{template}}. </script> """ Scenario: Rendering inline js with the feature enabled Given a fixture app "minify-js-app" And a file named "config.rb" with: """ activate :minify_javascript, :inline => true """ And the Server is running at "minify-js-app" When I go to "/inline-js.html" Then I should see: """ <script> (function(){this,should(),all.be(),on={one:line}})(); </script> <script> (function(){this,should(),too()})(); </script> <script type='text/javascript'> //<!-- (function(){one,line(),here()})(); //--> </script> <script type='text/html'> I'm a jQuery {{template}}. </script> """ Scenario: Rendering external js with the feature enabled Given a fixture app "minify-js-app" And a file named "config.rb" with: """ activate :minify_javascript """ And the Server is running at "minify-js-app" When I go to "/javascripts/js_test.js" Then I should see "1" lines When I go to "/more-js/other.js" Then I should see "1" lines Scenario: Rendering external js with a passthrough minifier And the Server is running at "passthrough-app" When I go to "/javascripts/js_test.js" Then I should see "8" lines Scenario: Rendering inline js (coffeescript) with the feature enabled Given a fixture app "minify-js-app" And a file named "config.rb" with: """ activate :minify_javascript, :inline => true """ And the Server is running at "minify-js-app" When I go to "/inline-coffeescript.html" Then I should see "3" lines Scenario: Rendering external js (coffeescript) with the feature enabled Given a fixture app "minify-js-app" And a file named "config.rb" with: """ activate :minify_javascript """ And the Server is running at "minify-js-app" When I go to "/javascripts/coffee_test.js" Then I should see "1" lines Scenario: Rendering inline js (coffeescript) with a passthrough minifier Given a fixture app "passthrough-app" And a file named "config.rb" with: """ module ::PassThrough def self.compress(data) data end end activate :minify_javascript, :inline => true set :js_compressor, ::PassThrough page "/inline-coffeescript.html", :layout => false """ And the Server is running at "passthrough-app" When I go to "/inline-coffeescript.html" Then I should see "14" lines Scenario: Rendering external js (coffeescript) with a passthrough minifier Given a fixture app "passthrough-app" And a file named "config.rb" with: """ module ::PassThrough def self.compress(data) data end end activate :minify_javascript set :js_compressor, ::PassThrough """ And the Server is running at "passthrough-app" When I go to "/javascripts/coffee_test.js" Then I should see "12" lines