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 JS 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(){should(),all.be(),on={one:line}}(); </script> <script> !function(){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 in a PHP document 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.php" Then I should see: """ <?='Hello'?> <script> !function(){should(),all.be(),on={one:line}}(); </script> <script type='text/javascript'> //<!-- !function(){one,line(),here()}(); //--> </script> <script type='text/html'> I'm a jQuery {{template}}. </script> """ Scenario: Rendering inline js in a proxied resource Given a fixture app "minify-js-app" And a file named "config.rb" with: """ activate :minify_javascript, :inline => true proxy '/inline-js-proxy', '/inline-js.html', ignore: true """ And the Server is running at "minify-js-app" When I go to "/inline-js-proxy" Then I should see "14" lines 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 in a proxied resource Given a fixture app "minify-js-app" And a file named "config.rb" with: """ activate :minify_javascript proxy '/js-proxy', '/javascripts/js_test.js', ignore: true """ And the Server is running at "minify-js-app" When I go to "/js-proxy" 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 "13" 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 "11" lines