mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-15 08:50:45 -07:00
fix: Strainer.add_filter method
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user