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;

use lib "t/lib";
use Wiki::Toolkit::Plugin::Foo;
use Wiki::Toolkit::Plugin::Bar;

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

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

while ( my $wiki = $iterator->new_wiki ) {
    my $plugin = Wiki::Toolkit::Plugin::Foo->new;
    isa_ok( $plugin, "Wiki::Toolkit::Plugin::Foo" );
    isa_ok( $plugin, "Wiki::Toolkit::Plugin" );
    can_ok( $plugin, qw( datastore indexer formatter ) );

    $wiki->register_plugin( plugin => $plugin );
    ok( ref $plugin->datastore,
        "->datastore seems to return an object after registration" );
    is_deeply( $plugin->datastore, $wiki->store, "...the right one" );

    # Check that the datastore etc attrs are set up before on_register
    # is called.
    my $plugin_2 = Wiki::Toolkit::Plugin::Bar->new;
    eval { $wiki->register_plugin( plugin => $plugin_2 ); };
    is( $@, "", "->on_register can access datastore" );
}