Skip to content

Commit

Permalink
Bug fix for assert_template when opening a new session.
Browse files Browse the repository at this point in the history
  • Loading branch information
tgxworld committed Jul 24, 2014
1 parent b17330c commit cc10288
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 5 deletions.
14 changes: 9 additions & 5 deletions actionpack/lib/action_controller/test_case.rb
Expand Up @@ -12,8 +12,13 @@ module TemplateAssertions
teardown :teardown_subscriptions
end

RENDER_TEMPLATE_INSTANCE_VARIABLES = %w{partials templates layouts files}.freeze

def setup_subscriptions
reset_template_assertion
RENDER_TEMPLATE_INSTANCE_VARIABLES.each do |instance_variable|
instance_variable_set("@_#{instance_variable}", Hash.new(0))
end

@_subscribers = []

@_subscribers << ActiveSupport::Notifications.subscribe("render_template.action_view") do |_name, _start, _finish, _id, payload|
Expand Down Expand Up @@ -58,10 +63,9 @@ def process(*args)
end

def reset_template_assertion
@_partials = Hash.new(0)
@_templates = Hash.new(0)
@_layouts = Hash.new(0)
@_files = Hash.new(0)
RENDER_TEMPLATE_INSTANCE_VARIABLES.each do |instance_variable|
instance_variable_get("@_#{instance_variable}").clear
end
end

# Asserts that the request was rendered with the appropriate template file or partials.
Expand Down
40 changes: 40 additions & 0 deletions actionpack/test/dispatch/template_assertions_test.rb
Expand Up @@ -55,4 +55,44 @@ def test_assert_file_reset_between_requests
get '/assert_template/render_nothing'
assert_template file: nil
end

def test_template_reset_between_requests_when_opening_a_session
open_session do |session|
session.get '/assert_template/render_with_template'
session.assert_template 'test/hello_world'

session.get '/assert_template/render_nothing'
session.assert_template nil
end
end

def test_partial_reset_between_requests_when_opening_a_session
open_session do |session|
session.get '/assert_template/render_with_partial'
session.assert_template partial: 'test/_partial'

session.get '/assert_template/render_nothing'
session.assert_template partial: nil
end
end

def test_layout_reset_between_requests_when_opening_a_session
open_session do |session|
session.get '/assert_template/render_with_layout'
session.assert_template layout: 'layouts/standard'

session.get '/assert_template/render_nothing'
session.assert_template layout: nil
end
end

def test_file_reset_between_requests_when_opening_a_session
open_session do |session|
session.get '/assert_template/render_with_file'
session.assert_template file: 'README.rdoc'

session.get '/assert_template/render_nothing'
session.assert_template file: nil
end
end
end

0 comments on commit cc10288

Please sign in to comment.