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 => ( 12 * scalar @Wiki::Toolkit::TestLib::wiki_info );
}
my $iterator = Wiki::Toolkit::TestLib->new_wiki_maker;
while ( my $wiki = $iterator->new_wiki ) {
SKIP: {
eval { require Test::MockObject; };
skip "Test::MockObject not installed", 12 if $@;
my $null_plugin = Test::MockObject->new;
my $plugin = Test::MockObject->new;
$plugin->mock( "on_register",
sub {
my $self = shift;
$self->{__registered} = 1;
$self->{__pre_moderate_called} = 0;
$self->{__pre_rename_called} = 0;
$self->{__pre_write_called} = 0;
}
);
eval { $wiki->register_plugin( plugin => $plugin ); };
ok( $plugin->{__registered}, "->on_register method called" );
# ===========================================================================
# Test the pre moderation plugin not allowing moderation
$plugin->mock( "pre_moderate",
sub {
my ($self, %args) = @_;
$self->{__pre_moderate_called}++;
return -1;
}
);
# Add a node
$wiki->write_node( "Test Node 3", "bar", undef, undef, 1 )
or die "Can't write first version node";
# Try to Moderate
my $ok = $wiki->moderate_node( name=>"Test Node 3", version=>1 )
or die "Can't moderate node";
is($plugin->{__pre_moderate_called}, 1, "Plugin was called");
is($ok, -1, "Wasn't allowed to moderate the node");
# Check it really wasn't
my %node = $wiki->retrieve_node("Test Node 3");
is($node{'version'}, 1, "Node correctly retrieved");
is($node{'moderated'}, 0, "Still not moderated");
# ===========================================================================
# Test the pre rename plugin not allowing rename
$plugin->mock( "pre_rename",
sub {
my ($self, %args) = @_;
$self->{__pre_rename_called}++;
return -1;
}
);
# Add another node
$wiki->write_node( "Test Node 2", "bar" )
or die "Can't write first version node";
# Try to Rename
$ok = $wiki->rename_node( old_name=>"Test Node 2", new_name=>"ren" )
or die "Can't rename node";
is($plugin->{__pre_rename_called}, 1, "Plugin was called");
is($ok, -1, "Wasn't allowed to rename the node");
# Check it really wasn't
%node = $wiki->retrieve_node("Test Node 2");
is($node{'version'}, 1, "Node correctly retrieved");
# ===========================================================================
# Test the pre write plugin not allowing write
$plugin->mock( "pre_write",
sub {
my ($self, %args) = @_;
$self->{__pre_write_called}++;
return -1;
}
);
# Try to Add
$ok = $wiki->write_node( "Test Node 4", "bar" )
or die "Can't add node";
is($plugin->{__pre_write_called}, 1, "Plugin was called");
is($ok, -1, "Wasn't allowed to write the node");
# Check it really wasn't
%node = $wiki->retrieve_node("Test Node 4");
is($node{'version'}, 0, "Node wasn't added");
is($node{'content'}, '', "Node wasn't added");
}
}