mirror of
https://github.com/Shopify/liquid.git
synced 2025-11-13 00:00:48 -05:00
fix: Strainer.add_filter method
This commit is contained in:
parent
b1ef28566e
commit
aa79c33dda
@ -27,7 +27,7 @@ module Liquid
|
|||||||
|
|
||||||
def self.add_filter(filter)
|
def self.add_filter(filter)
|
||||||
raise ArgumentError, "Expected module but got: #{filter.class}" unless filter.is_a?(Module)
|
raise ArgumentError, "Expected module but got: #{filter.class}" unless filter.is_a?(Module)
|
||||||
unless self.class.include?(filter)
|
unless self.include?(filter)
|
||||||
invokable_non_public_methods = (filter.private_instance_methods + filter.protected_instance_methods).select { |m| invokable?(m) }
|
invokable_non_public_methods = (filter.private_instance_methods + filter.protected_instance_methods).select { |m| invokable?(m) }
|
||||||
if invokable_non_public_methods.any?
|
if invokable_non_public_methods.any?
|
||||||
raise MethodOverrideError, "Filter overrides registered public methods as non public: #{invokable_non_public_methods.join(', ')}"
|
raise MethodOverrideError, "Filter overrides registered public methods as non public: #{invokable_non_public_methods.join(', ')}"
|
||||||
|
|||||||
@ -145,4 +145,13 @@ class StrainerUnitTest < Minitest::Test
|
|||||||
Strainer.global_filter(LateAddedFilter)
|
Strainer.global_filter(LateAddedFilter)
|
||||||
assert_equal 'filtered', Strainer.create(nil).invoke('late_added_filter', 'input')
|
assert_equal 'filtered', Strainer.create(nil).invoke('late_added_filter', 'input')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_add_filter_returns_nil_when_a_filter_module_was_added
|
||||||
|
a = Module.new
|
||||||
|
strainer = Context.new.strainer
|
||||||
|
result1 = strainer.class.add_filter(a)
|
||||||
|
result2 = strainer.class.add_filter(a)
|
||||||
|
assert_kind_of Set, result1
|
||||||
|
assert_kind_of NilClass, result2
|
||||||
|
end
|
||||||
end # StrainerTest
|
end # StrainerTest
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user