Fix :follow_links option not doing anything when set to false

This commit is contained in:
Thibaut Courouble 2017-07-30 13:07:29 -04:00
parent ba6d80b27f
commit dd8c80060a
2 changed files with 36 additions and 20 deletions

View file

@ -30,15 +30,15 @@ module Docs
end
def skip_links?
if context[:skip_links].is_a? Proc
context[:skip_links].call self
else
context[:skip_links]
end
return context[:skip_links].call(self) if context[:skip_links].is_a?(Proc)
return true if context[:skip_links]
false
end
def follow_links?
!(context[:follow_links] && context[:follow_links].call(self) == false)
return false if context[:follow_links] == false
return false if context[:follow_links].is_a?(Proc) && context[:follow_links].call(self) == false
true
end
def to_internal_url(str)

View file

@ -331,20 +331,14 @@ class InternalUrlsFilterTest < MiniTest::Spec
end
end
context "context[:follow_links] is a block" do
context "context[:follow_links]" do
before do
@body = link_to context[:url]
end
it "calls the block with the filter instance" do
context[:follow_links] = ->(arg) { @arg = arg; nil }
filter.call
assert_equal filter, @arg
end
context "and the block returns false" do
context "when it is false" do
before do
context[:follow_links] = ->(_) { false }
context[:follow_links] = false
end
it "doesn't set :internal_urls" do
@ -356,13 +350,35 @@ class InternalUrlsFilterTest < MiniTest::Spec
end
end
context "and the block returns true" do
before do
context[:follow_links] = ->(_) { true }
context "when it is a block" do
it "calls the block with the filter instance" do
context[:follow_links] = ->(arg) { @arg = arg; nil }
filter.call
assert_equal filter, @arg
end
it "sets :internal_urls" do
assert internal_urls
context "and the block returns false" do
before do
context[:follow_links] = ->(_) { false }
end
it "doesn't set :internal_urls" do
refute internal_urls
end
it "replaces urls" do
refute_equal @body, filter_output_string
end
end
context "and the block returns true" do
before do
context[:follow_links] = ->(_) { true }
end
it "sets :internal_urls" do
assert internal_urls
end
end
end
end