Showing the changes to test (1 of 7 files). Show all
Unified · Split
| @@ -5,16 +5,15 @@ class InternalUrlsFilterTest < MiniTest::Spec · 4 unmodified lines | |||
| 5 | include FilterTestHelper | 5 | include FilterTestHelper |
| 6 | self.filter_class = Docs::InternalUrlsFilter | 6 | self.filter_class = Docs::InternalUrlsFilter |
| 7 | 7 | ||
| 8 | describe ":internal_urls" do | 8 | before do |
| 9 | before do | 9 | context[:base_url] = context[:root_url] = context[:url] = 'http://example.com/dir' |
| 10 | context[:base_url] = context[:root_url] = 'http://example.com/dir' | 10 | end |
| 11 | context[:url] = 'http://example.com/dir' | ||
| 12 | end | ||
| 13 | 11 | ||
| 14 | let :internal_urls do | 12 | let :internal_urls do |
| 15 | filter_result[:internal_urls] | 13 | filter_result[:internal_urls] |
| 16 | end | 14 | end |
| 17 | 15 | ||
| 16 | describe ":internal_urls" do | ||
| 18 | it "is an array" do | 17 | it "is an array" do |
| 19 | assert_instance_of Array, internal_urls | 18 | assert_instance_of Array, internal_urls |
| 20 | end | 19 | end |
| @@ -135,31 +134,6 @@ class InternalUrlsFilterTest < MiniTest::Spec · 114 unmodified lines | |||
| 135 | end | 134 | end |
| 136 | end | 135 | end |
| 137 | 136 | ||
| 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 | |||
| 163 | context "when context[:follow_links] is a block" do | 137 | context "when context[:follow_links] is a block" do |
| 164 | before do | 138 | before do |
| 165 | @body = link_to context[:url] | 139 | @body = link_to context[:url] |
| @@ -305,4 +279,46 @@ class InternalUrlsFilterTest < MiniTest::Spec · 139 unmodified lines | |||
| 305 | end | 279 | end |
| 306 | end | 280 | end |
| 307 | end | 281 | 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 | ||
| 308 | end | 324 | end |