class Nanoc::Extra::Checking::Checks::InternalLinksTest < Nanoc::TestCase def test_run with_site do |site| # Create files FileUtils.mkdir_p('output') FileUtils.mkdir_p('output/stuff') File.open('output/foo.txt', 'w') { |io| io.write('broken') } File.open('output/bar.html', 'w') { |io| io.write('not broken') } # Create check check = Nanoc::Extra::Checking::Checks::InternalLinks.create(site) check.run # Test assert check.issues.empty? end end def test_valid? with_site do |site| # Create files FileUtils.mkdir_p('output') FileUtils.mkdir_p('output/stuff') File.open('output/origin', 'w') { |io| io.write('hi') } File.open('output/foo', 'w') { |io| io.write('hi') } File.open('output/stuff/blah', 'w') { |io| io.write('hi') } # Create check check = Nanoc::Extra::Checking::Checks::InternalLinks.create(site) # Test assert check.send(:valid?, 'foo', 'output/origin') assert check.send(:valid?, 'origin', 'output/origin') assert check.send(:valid?, 'stuff/blah', 'output/origin') assert check.send(:valid?, '/foo', 'output/origin') assert check.send(:valid?, '/origin', 'output/origin') assert check.send(:valid?, '/stuff/blah', 'output/origin') end end def test_remove_query_string with_site do |site| FileUtils.mkdir_p('output/stuff') File.open('output/stuff/right', 'w') { |io| io.write('hi') } check = Nanoc::Extra::Checking::Checks::InternalLinks.create(site) assert check.send(:valid?, 'stuff/right?foo=123', 'output/origin') refute check.send(:valid?, 'stuff/wrong?foo=123', 'output/origin') end end def test_exclude with_site do |site| # Create check check = Nanoc::Extra::Checking::Checks::InternalLinks.create(site) site.config.update({ checks: { internal_links: { exclude: ['^/excluded\d+'] } } }) # Test assert check.send(:valid?, '/excluded1', 'output/origin') assert check.send(:valid?, '/excluded2', 'output/origin') assert !check.send(:valid?, '/excluded_not', 'output/origin') end end def test_exclude_targets with_site do |site| # Create check check = Nanoc::Extra::Checking::Checks::InternalLinks.create(site) site.config.update({ checks: { internal_links: { exclude_targets: ['^/excluded\d+'] } } }) # Test assert check.send(:valid?, '/excluded1', 'output/origin') assert check.send(:valid?, '/excluded2', 'output/origin') assert !check.send(:valid?, '/excluded_not', 'output/origin') end end def test_exclude_origins with_site do |site| # Create check check = Nanoc::Extra::Checking::Checks::InternalLinks.create(site) site.config.update({ checks: { internal_links: { exclude_origins: ['^/excluded'] } } }) # Test assert check.send(:valid?, '/foo', 'output/excluded') assert !check.send(:valid?, '/foo', 'output/not_excluded') end end def test_unescape_url with_site do |site| FileUtils.mkdir_p('output/stuff') File.open('output/stuff/right foo', 'w') { |io| io.write('hi') } check = Nanoc::Extra::Checking::Checks::InternalLinks.create(site) assert check.send(:valid?, 'stuff/right%20foo', 'output/origin') refute check.send(:valid?, 'stuff/wrong%20foo', 'output/origin') end end end