The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use CGI::Wiki;
use CGI::Wiki::TestConfig::Utilities;
use Test::More tests =>
  (1 + 6 * $CGI::Wiki::TestConfig::Utilities::num_stores);

use_ok( "CGI::Wiki::Plugin::Categoriser" );

my %stores = CGI::Wiki::TestConfig::Utilities->stores;

my ($store_name, $store);
while ( ($store_name, $store) = each %stores ) {
    SKIP: {
      skip "$store_name storage backend not configured for testing", 6
          unless $store;

      print "#\n##### TEST CONFIG: Store: $store_name\n#\n";

      my $wiki = CGI::Wiki->new( store => $store );
      my $categoriser = eval { CGI::Wiki::Plugin::Categoriser->new; };
      is( $@, "", "'new' doesn't croak" );
      isa_ok( $categoriser, "CGI::Wiki::Plugin::Categoriser" );
      $wiki->register_plugin( plugin => $categoriser );

      # Test ->in_category
      my $isa_pub = $categoriser->in_category( category => "Pubs",
                                               node     => "Albion" );
      ok( $isa_pub, "in_category returns true for things in the category" );
      $isa_pub = $categoriser->in_category( category => "Pubs",
                                            node     => "Ken Livingstone" );
      ok( !$isa_pub, "...and false for things not in the category" );

      $isa_pub = $categoriser->in_category( category => "pubs",
                                            node     => "Albion" );
      ok( $isa_pub, "...and is case-insensitive" );

      # Test ->categories
      my @categories = $categoriser->categories( node => "Calthorpe Arms" );
      is_deeply( [ sort @categories ], [ "Pub Food", "Pubs" ],
                 "...->categories returns all categories" );

    } # end of SKIP
}