提交 cc10288e 编写于 作者: G Guo Xiang Tan

Bug fix for assert_template when opening a new session.

See https://github.com/rails/rails/pull/16234#commitcomment-7115670.
上级 b17330cf
......@@ -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|
......@@ -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.
......
......@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册