Skip to content

Commit e50dc66

Browse files
committed
req convert_filter if text/nodefilter present
1 parent 492ab84 commit e50dc66

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

lib/html_pipeline.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,9 @@ def initialize(text_filters: [], convert_filter: nil, sanitization_config: Sanit
116116
validate_filters(@node_filters, HTMLPipeline::NodeFilter)
117117

118118
@convert_filter = convert_filter
119-
if @convert_filter.nil? && !@node_filters.empty?
120-
raise InvalidFilterError, "Must provide `convert_filter` if `node_filter`s is also provided"
119+
120+
if @convert_filter.nil? && (!@text_filters.empty? && !@node_filters.empty?)
121+
raise InvalidFilterError, "Must provide `convert_filter` if `text_filters` and `node_filters` are also provided"
121122
elsif !@convert_filter.nil?
122123
validate_filter(@convert_filter, HTMLPipeline::ConvertFilter)
123124
end

test/html_pipeline_test.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,9 @@
44
require "helpers/mocked_instrumentation_service"
55

66
class HTMLPipelineTest < Minitest::Test
7-
class TestFilter < HTMLPipeline::TextFilter
8-
class << self
9-
def call(input, context: {}, result: {})
10-
input.reverse
11-
end
12-
end
13-
end
14-
157
def setup
168
@default_context = {}
17-
@pipeline = HTMLPipeline.new(text_filters: [TestFilter], default_context: @default_context)
9+
@pipeline = HTMLPipeline.new(text_filters: [TestTextFilter], default_context: @default_context)
1810
end
1911

2012
def test_filter_instrumentation
@@ -27,7 +19,7 @@ def test_filter_instrumentation
2719

2820
assert(event, "event expected")
2921
assert_equal("call_filter.html_pipeline", event)
30-
assert_equal(TestFilter.name, payload[:filter])
22+
assert_equal(TestTextFilter.name, payload[:filter])
3123
assert_equal(@pipeline.class.name, payload[:pipeline])
3224
assert_equal(body.reverse, payload[:result][:output])
3325
end
@@ -90,6 +82,14 @@ def test_incorrect_convert_filter
9082
end
9183
end
9284

85+
def test_convert_filter_needed_for_text_and_html_filters
86+
assert_raises(HTMLPipeline::InvalidFilterError) do
87+
HTMLPipeline.new(text_filters:[TestTextFilter], node_filters: [
88+
HTMLPipeline::NodeFilter::MentionFilter.new,
89+
], default_context: @default_context)
90+
end
91+
end
92+
9393
def test_incorrect_node_filters
9494
assert_raises(HTMLPipeline::InvalidFilterError) do
9595
HTMLPipeline.new(node_filters: [HTMLPipeline::ConvertFilter::MarkdownFilter], default_context: @default_context)

test/test_helper.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,11 @@ module TestHelpers
1515
end
1616

1717
Minitest::Test.include(TestHelpers)
18+
19+
class TestTextFilter < HTMLPipeline::TextFilter
20+
class << self
21+
def call(input, context: {}, result: {})
22+
input.reverse
23+
end
24+
end
25+
end

0 commit comments

Comments
 (0)