Test disable_tags register

This commit is contained in:
Mike Angell
2019-09-23 22:02:13 +10:00
parent fc4059c8dd
commit 4202976d79
4 changed files with 59 additions and 3 deletions

View File

@@ -38,8 +38,10 @@ module Liquid
''
end
def disabled?(context)
context.registers['disabled_tags']&.disabled?(tag_name)
def disabled?(context, output)
if context.registers['disabled_tags']&.disabled?(tag_name)
output << disabled_response
end
end
def disabled_response

View File

@@ -45,7 +45,7 @@ module Liquid
end
def render_to_output_buffer(context, output)
return output << disabled_response if disabled?(context)
disabled?(context, output) && return
template_name = context.evaluate(@template_name_expr)
raise ArgumentError, options[:locale].t("errors.argument.include") unless template_name

View File

@@ -146,4 +146,23 @@ class RenderTagTest < Minitest::Test
Liquid::Template.file_system = StubFileSystem.new('decr' => '{% decrement %}')
assert_template_result '-1-2-1', '{% decrement %}{% decrement %}{% render "decr" %}'
end
def test_includes_will_not_render_inside_render_tag
Liquid::Template.file_system = StubFileSystem.new(
'foo' => 'bar',
'test_include' => '{% include "foo" %}'
)
assert_template_result 'include usage has been disabled in this context.', '{% render "test_include" %}'
end
def test_includes_will_not_render_inside_nested_sibling_tags
Liquid::Template.file_system = StubFileSystem.new(
'foo' => 'bar',
'nested_render_with_sibling_include' => '{% render "test_include" %}{% include "foo" %}',
'test_include' => '{% include "foo" %}'
)
assert_template_result 'include usage has been disabled in this context.include usage has been disabled in this context.', '{% render "nested_render_with_sibling_include" %}'
end
end

View File

@@ -0,0 +1,35 @@
# frozen_string_literal: true
require 'test_helper'
class DisabledTagsTest < Minitest::Test
include Liquid
def test_disables_tag_specified
register = DisabledTags.new
register.disable("foo") do
assert_equal true, register.disabled?("foo")
assert_equal false, register.disabled?("bar")
end
end
def test_disables_nested_tags
register = DisabledTags.new
register.disable("foo") do
register.disable("foo") do
assert_equal true, register.disabled?("foo")
assert_equal false, register.disabled?("bar")
end
register.disable("bar") do
assert_equal true, register.disabled?("foo")
assert_equal true, register.disabled?("bar")
register.disable("foo") do
assert_equal true, register.disabled?("foo")
assert_equal true, register.disabled?("bar")
end
end
assert_equal true, register.disabled?("foo")
assert_equal false, register.disabled?("bar")
end
end
end