From aad7fbde68684547959dcccc2102c978d5347a78 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 18 Feb 2007 23:54:20 +0000 Subject: Added caching option to AssetTagHelper#stylesheet_link_tag and AssetTagHelper#javascript_include_tag [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6164 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/test/template/asset_tag_helper_test.rb | 124 ++++++++++++++++++++-- 1 file changed, 114 insertions(+), 10 deletions(-) (limited to 'actionpack/test/template/asset_tag_helper_test.rb') diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb index 33705b8e7c..8b8a426bf6 100644 --- a/actionpack/test/template/asset_tag_helper_test.rb +++ b/actionpack/test/template/asset_tag_helper_test.rb @@ -6,7 +6,25 @@ class AssetTagHelperTest < Test::Unit::TestCase include ActionView::Helpers::AssetTagHelper def setup - Object.send(:const_set, :RAILS_ROOT, File.dirname(__FILE__) + "/../fixtures/") + silence_warnings do + ActionView::Helpers::AssetTagHelper.send( + :const_set, + :JAVASCRIPTS_DIR, + File.dirname(__FILE__) + "/../fixtures/public/javascripts" + ) + + ActionView::Helpers::AssetTagHelper.send( + :const_set, + :STYLESHEETS_DIR, + File.dirname(__FILE__) + "/../fixtures/public/stylesheets" + ) + + ActionView::Helpers::AssetTagHelper.send( + :const_set, + :ASSETS_DIR, + File.dirname(__FILE__) + "/../fixtures/public" + ) + end @controller = Class.new do attr_accessor :request @@ -23,7 +41,7 @@ class AssetTagHelperTest < Test::Unit::TestCase end def teardown - Object.send(:remove_const, :RAILS_ROOT) if defined?(RAILS_ROOT) + ActionController::Base.perform_caching = false ENV["RAILS_ASSET_ID"] = nil end @@ -53,9 +71,10 @@ class AssetTagHelperTest < Test::Unit::TestCase %(javascript_include_tag("xmlhr.js")) => %(), %(javascript_include_tag("xmlhr", :lang => "vbscript")) => %(), %(javascript_include_tag("common.javascript", "/elsewhere/cools")) => %(\n), - %(javascript_include_tag(:defaults)) => %(\n\n\n), - %(javascript_include_tag(:defaults, "test")) => %(\n\n\n\n), - %(javascript_include_tag("test", :defaults)) => %(\n\n\n\n) + %(javascript_include_tag(:defaults)) => %(\n\n\n\n), + %(javascript_include_tag(:all)) => %(\n\n), + %(javascript_include_tag(:defaults, "test")) => %(\n\n\n\n\n), + %(javascript_include_tag("test", :defaults)) => %(\n\n\n\n\n) } StylePathToTag = { @@ -71,6 +90,8 @@ class AssetTagHelperTest < Test::Unit::TestCase %(stylesheet_link_tag("/dir/file")) => %(), %(stylesheet_link_tag("dir/file")) => %(), %(stylesheet_link_tag("style", :media => "all")) => %(), + %(stylesheet_link_tag(:all)) => %(\n), + %(stylesheet_link_tag(:all, :media => "all")) => %(\n), %(stylesheet_link_tag("random.styles", "/css/stylish")) => %(\n), %(stylesheet_link_tag("http://www.example.com/styles/style")) => %() } @@ -106,20 +127,19 @@ class AssetTagHelperTest < Test::Unit::TestCase end def test_javascript_include_tag - Object.send(:remove_const, :RAILS_ROOT) if defined?(RAILS_ROOT) + ENV["RAILS_ASSET_ID"] = "" JavascriptIncludeToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } - Object.send(:const_set, :RAILS_ROOT, File.dirname(__FILE__) + "/../fixtures/") ENV["RAILS_ASSET_ID"] = "1" assert_dom_equal(%(\n\n\n\n), javascript_include_tag(:defaults)) end def test_register_javascript_include_default - Object.send(:remove_const, :RAILS_ROOT) if defined?(RAILS_ROOT) + ENV["RAILS_ASSET_ID"] = "" ActionView::Helpers::AssetTagHelper::register_javascript_include_default 'slider' - assert_dom_equal %(\n\n\n\n), javascript_include_tag(:defaults) + assert_dom_equal %(\n\n\n\n\n), javascript_include_tag(:defaults) ActionView::Helpers::AssetTagHelper::register_javascript_include_default 'lib1', '/elsewhere/blub/lib2' - assert_dom_equal %(\n\n\n\n\n\n), javascript_include_tag(:defaults) + assert_dom_equal %(\n\n\n\n\n\n\n), javascript_include_tag(:defaults) end def test_stylesheet_path @@ -127,6 +147,7 @@ class AssetTagHelperTest < Test::Unit::TestCase end def test_stylesheet_link_tag + ENV["RAILS_ASSET_ID"] = "" StyleLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } end @@ -169,6 +190,89 @@ class AssetTagHelperTest < Test::Unit::TestCase image_tag(source) assert_equal copy, source end + + + def test_caching_javascript_include_tag_when_caching_on + ENV["RAILS_ASSET_ID"] = "" + ActionController::Base.perform_caching = true + + assert_dom_equal( + %(), + javascript_include_tag(:all, :cache => true) + ) + + assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js')) + + assert_dom_equal( + %(), + javascript_include_tag(:all, :cache => "money") + ) + + assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js')) + ensure + File.delete(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js')) + File.delete(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js')) + end + + def test_caching_javascript_include_tag_when_caching_off + ENV["RAILS_ASSET_ID"] = "" + ActionController::Base.perform_caching = false + + assert_dom_equal( + %(\n\n), + javascript_include_tag(:all, :cache => true) + ) + + assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js')) + + assert_dom_equal( + %(\n\n), + javascript_include_tag(:all, :cache => "money") + ) + + assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js')) + end + + def test_caching_stylesheet_link_tag_when_caching_on + ENV["RAILS_ASSET_ID"] = "" + ActionController::Base.perform_caching = true + + assert_dom_equal( + %(), + stylesheet_link_tag(:all, :cache => true) + ) + + assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css')) + + assert_dom_equal( + %(), + stylesheet_link_tag(:all, :cache => "money") + ) + + assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css')) + ensure + File.delete(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css')) + File.delete(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css')) + end + + def test_caching_stylesheet_include_tag_when_caching_off + ENV["RAILS_ASSET_ID"] = "" + ActionController::Base.perform_caching = false + + assert_dom_equal( + %(\n), + stylesheet_link_tag(:all, :cache => true) + ) + + assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css')) + + assert_dom_equal( + %(\n), + stylesheet_link_tag(:all, :cache => "money") + ) + + assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css')) + end end class AssetTagHelperNonVhostTest < Test::Unit::TestCase -- cgit v1.2.3