Permalink
Browse files

Fix a few caching errors, expose a case thats still not working (ref …

…#107330 [catfish]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8630 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 3dd6027 commit eff27ab11962aa90885653438d0d04d3136fd846 @dhh dhh committed Jan 12, 2008
@@ -32,8 +32,8 @@ module CacheHelper
# <i>Topics listed alphabetically</i>
# <% end %>
def cache(name = {}, options = nil, &block)
- template_extension = find_template_extension_for(first_render)[/\.(\w+)$/, 1].to_sym
- handler = Base.handler_for_extension(template_extension)
+ template_extension = find_template_extension_for(first_render)[/\.?(\w+)$/, 1].to_sym
+ handler = Base.handler_class_for_extension(template_extension)
handler.new(@controller).cache_fragment(block, name, options)
end
end
@@ -367,7 +367,7 @@ def setup
@controller.send(:initialize_current_url)
end
- def test_fragement_cache_key
+ def test_fragment_cache_key
assert_equal 'views/what a key', @controller.fragment_cache_key('what a key')
assert_equal( "views/test.host/fragment_caching_test/some_action",
@controller.fragment_cache_key(:controller => 'fragment_caching_test',:action => 'some_action'))
@@ -479,3 +479,69 @@ def test_cache_rjs_fragment_debug_mode_does_not_interfere
end
end
end
+
+
+class FunctionalCachingController < ActionController::Base
+ def fragment_cached
+ end
+
+ def html_fragment_cached_with_partial
+ respond_to do |format|
+ format.html
+ end
+ end
+
+ def js_fragment_cached_with_partial
+ respond_to do |format|
+ format.js
+ end
+ end
+
+
+ def rescue_action(e)
+ raise e
+ end
+end
+
+FunctionalCachingController.view_paths = [ File.dirname(__FILE__) + "/../fixtures/" ]
+
+class FunctionalFragmentCachingTest < Test::Unit::TestCase
+ def setup
+ ActionController::Base.perform_caching = true
+ @store = ActiveSupport::Cache::MemoryStore.new
+ ActionController::Base.cache_store = @store
+ @controller = FunctionalCachingController.new
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ end
+ def test_fragment_caching
+ get :fragment_cached
+ assert_response :success
+ expected_body = <<-CACHED
+Hello
+This bit's fragment cached
+CACHED
+ assert_equal expected_body, @response.body
+
+ assert_equal "This bit's fragment cached", @store.read('views/test.host/functional_caching/fragment_cached')
+ end
+
+ def test_fragment_caching_in_partials
+ get :html_fragment_cached_with_partial
+ assert_response :success
+ assert_match /Fragment caching in a partial/, @response.body
+ assert_match "Fragment caching in a partial", @store.read('views/test.host/functional_caching/html_fragment_cached_with_partial')
+ end
+
+ def test_fragment_caching_in_rjs_partials
+ xhr :get, :js_fragment_cached_with_partial
+ assert_response :success
+ assert_match /Fragment caching in a partial/, @response.body
+ assert_match "Fragment caching in a partial", @store.read('views/test.host/functional_caching/js_fragment_cached_with_partial')
+ end
+end
+
+
+
+
+
@@ -0,0 +1,3 @@
+<% cache do %>
+Fragment caching in a partial
+<% end %>
@@ -0,0 +1,2 @@
+Hello
+<% cache do %>This bit's fragment cached<% end %>
@@ -0,0 +1 @@
+<%= render :partial => 'partial' %>
@@ -0,0 +1 @@
+page.replace_html 'notices', :partial => 'partial'

0 comments on commit eff27ab

Please sign in to comment.