Optimize filter invocation

This commit is contained in:
Dylan Thacker-Smith
2020-08-18 15:43:56 -04:00
parent 5532df880f
commit 7af188dcca
7 changed files with 74 additions and 32 deletions
+8 -8
View File
@@ -6,11 +6,11 @@ class StrainerFactoryUnitTest < Minitest::Test
include Liquid
module AccessScopeFilters
def public_filter
def public_filter(_input)
"public"
end
def private_filter
def private_filter(_input)
"private"
end
private :private_filter
@@ -31,13 +31,13 @@ class StrainerFactoryUnitTest < Minitest::Test
def test_strainer
strainer = StrainerFactory.create(@context)
assert_equal(5, strainer.invoke('size', 'input'))
assert_equal("public", strainer.invoke("public_filter"))
assert_equal("public", strainer.invoke("public_filter", 'input'))
end
def test_stainer_raises_argument_error
strainer = StrainerFactory.create(@context)
assert_raises(Liquid::ArgumentError) do
strainer.invoke("public_filter", 1)
strainer.invoke("public_filter", 'input', 1)
end
end
@@ -45,11 +45,11 @@ class StrainerFactoryUnitTest < Minitest::Test
strainer = StrainerFactory.create(@context)
exception = assert_raises(Liquid::ArgumentError) do
strainer.invoke("public_filter", 1)
strainer.invoke("public_filter", 'input', 1)
end
assert_match(
/\ALiquid error: wrong number of arguments \((1 for 0|given 1, expected 0)\)\z/,
/\ALiquid error: wrong number of arguments \((2 for 1|given 2, expected 1)\)\z/,
exception.message
)
assert_equal(exception.backtrace[0].split(':')[0], __FILE__)
@@ -66,8 +66,8 @@ class StrainerFactoryUnitTest < Minitest::Test
def test_strainer_returns_nil_if_no_filter_method_found
strainer = StrainerFactory.create(@context)
assert_nil(strainer.invoke("private_filter"))
assert_nil(strainer.invoke("undef_the_filter"))
assert_nil(strainer.invoke("private_filter", nil))
assert_nil(strainer.invoke("undef_the_filter", nil))
end
def test_strainer_returns_first_argument_if_no_method_and_arguments_given
+1 -1
View File
@@ -60,7 +60,7 @@ class StrainerTemplateUnitTest < Minitest::Test
strainer = Context.new.strainer
with_global_filter do
strainer.class.add_filter(PublicMethodOverrideFilter)
assert(strainer.class.send(:filter_methods).include?('public_filter'))
assert(strainer.class.send(:filter_methods).include?(:public_filter))
end
end