diff --git a/lib/docs/filters/core/internal_urls.rb b/lib/docs/filters/core/internal_urls.rb index 1df05aec..09b62d35 100644 --- a/lib/docs/filters/core/internal_urls.rb +++ b/lib/docs/filters/core/internal_urls.rb @@ -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) diff --git a/test/lib/docs/filters/core/internal_urls_test.rb b/test/lib/docs/filters/core/internal_urls_test.rb index f099f624..5d9df469 100644 --- a/test/lib/docs/filters/core/internal_urls_test.rb +++ b/test/lib/docs/filters/core/internal_urls_test.rb @@ -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