History

Make :skip_links option apply to pages instead of individual links

Thibaut committed 12 years ago

Commit 47eb7ee1 parent 6c8eea17 files · +59 −43Browse files

Showing the changes to test (1 of 7 files). Show all

Unified · Split

test/lib/docs/filters/core/internal_urls_test.rb+49−33
@@ -5,16 +5,15 @@ class InternalUrlsFilterTest < MiniTest::Spec · 4 unmodified lines
55 include FilterTestHelper
66 self.filter_class = Docs::InternalUrlsFilter
77
8− describe ":internal_urls" do
9− before do
10− context[:base_url] = context[:root_url] = 'http://example.com/dir'
11− context[:url] = 'http://example.com/dir'
12− end
8+ before do
9+ context[:base_url] = context[:root_url] = context[:url] = 'http://example.com/dir'
10+ end
1311
14− let :internal_urls do
15− filter_result[:internal_urls]
16− end
12+ let :internal_urls do
13+ filter_result[:internal_urls]
14+ end
1715
16+ describe ":internal_urls" do
1817 it "is an array" do
1918 assert_instance_of Array, internal_urls
2019 end
@@ -135,31 +134,6 @@ class InternalUrlsFilterTest < MiniTest::Spec · 114 unmodified lines
135134 end
136135 end
137136
138− context "when context[:skip_links] is a block" do
139− let :block do
140− context[:skip_links] = Proc.new {}
141− end
142−
143− it "passes all links to the block" do
144− @body = link_to 'http://example.com'
145− context[:skip_links] = ->(arg) { @arg = arg }
146− internal_urls
147− assert_equal @body, @arg.to_s
148− end
149−
150− it "doesn't include urls from links where the block returns true" do
151− @body = link_to 'http://example.com/dir/path'
152− context[:skip_links] = ->(_) { true }
153− assert_empty internal_urls
154− end
155−
156− it "includes urls from links where the block returns false" do
157− @body = link_to 'http://example.com/dir/path'
158− context[:skip_links] = ->(_) { false }
159− assert_equal 1, internal_urls.length
160− end
161− end
162−
163137 context "when context[:follow_links] is a block" do
164138 before do
165139 @body = link_to context[:url]
@@ -305,4 +279,46 @@ class InternalUrlsFilterTest < MiniTest::Spec · 139 unmodified lines
305279 end
306280 end
307281 end
282+
283+ context "context[:skip_links]" do
284+ before do
285+ @body = link_to context[:url]
286+ end
287+
288+ context "when it is a block" do
289+ it "calls the block with the filter instance" do
290+ context[:skip_links] = ->(arg) { @arg = arg; nil }
291+ filter.call
292+ assert_equal filter, @arg
293+ end
294+
295+ context "and the block returns true" do
296+ before do
297+ context[:skip_links] = ->(_) { true }
298+ end
299+
300+ it "doesn't set :internal_urls" do
301+ refute internal_urls
302+ end
303+
304+ it "doesn't replace urls" do
305+ assert_equal @body, filter_output_string
306+ end
307+ end
308+
309+ context "and the block returns false" do
310+ before do
311+ context[:skip_links] = ->(_) { false }
312+ end
313+
314+ it "set :internal_urls" do
315+ assert internal_urls
316+ end
317+
318+ it "replaces urls" do
319+ refute_equal @body, filter_output_string
320+ end
321+ end
322+ end
323+ end
308324 end