The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Wiki::Toolkit::TestLib;
use Test::More;

if ( scalar @Wiki::Toolkit::TestLib::wiki_info == 0 ) {
    plan skip_all => "no backends configured";
} else {
    plan tests => ( 3 * scalar @Wiki::Toolkit::TestLib::wiki_info );
}

my $iterator = Wiki::Toolkit::TestLib->new_wiki_maker;

while ( my $wiki = $iterator->new_wiki ) {
    # Put some test data in.
    $wiki->write_node( "NodeOne", "NonExistentNode" )
      or die "Couldn't write node";
    $wiki->write_node( "NodeTwo", "NodeOne" )
      or die "Couldn't write node";
    $wiki->write_node( "NodeThree", "NonExistentNode" )
      or die "Couldn't write node";

    my @links = $wiki->list_dangling_links;
    my %dangling;
    foreach my $link (@links) {
        $dangling{$link}++;
    }
    ok( $dangling{"NonExistentNode"},
        "dangling links returned by ->list_dangling_links" );
    ok( !$dangling{"NodeOne"}, "...but not existing ones" );
    is( $dangling{"NonExistentNode"}, 1,
        "...and each dangling link only returned once" );
}