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)
|
||||
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) }
|
||||
if invokable_non_public_methods.any?
|
||||
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)
|
||||
assert_equal 'filtered', Strainer.create(nil).invoke('late_added_filter', 'input')
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user