Changeset 226


Ignore:
Timestamp:
Apr 20, 2006, 3:27:13 PM (14 years ago)
Author:
nick
Message:

Add support and tests for pre_moderation plugins

Location:
wiki-toolkit/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • wiki-toolkit/trunk/lib/Wiki/Toolkit/Plugin.pm

    r225 r226  
    3333=item B<pre_moderate>
    3434
    35   * TODO *
     35  Called before moderation is performed.
     36  Allows changes to the parameters used in moderation.
     37
     38  my %args = @_;
     39  my ($name_ref,$version_ref) = @args{ qw( node version ) };
     40  $$name_ref =~ s/\s/_/g;
     41
     42  TODO: Allow declining of moderation.
    3643
    3744=item B<post_moderate>
     
    189196=head1 COPYRIGHT
    190197
    191      Copyright (C) 2003-4 Kake Pugh.  All Rights Reserved.
     198     Copyright (C) 2003-6 Kake Pugh.  All Rights Reserved.
    192199
    193200This module is free software; you can redistribute it and/or modify it
     
    197204
    1982051;
    199 
    200 
    201 
    202 
    203 
  • wiki-toolkit/trunk/lib/Wiki/Toolkit/Store/Database.pm

    r217 r226  
    791791
    792792        my ($name,$version) = ($args{name},$args{version});
     793
     794    # Call pre_moderate on any plugins.
     795    my @plugins = @{ $args{plugins} || [ ] };
     796    foreach my $plugin (@plugins) {
     797        if ( $plugin->can( "pre_moderate" ) ) {
     798            $plugin->pre_moderate(
     799                                node     => \$name,
     800                                version  => \$version );
     801        }
     802    }
    793803
    794804        # Get the ID of this node
  • wiki-toolkit/trunk/t/150_plugins.t

    r209 r226  
    66    plan skip_all => "no backends configured";
    77} else {
    8     plan tests => ( 26 * scalar @Wiki::Toolkit::TestLib::wiki_info );
     8    plan tests => ( 28 * scalar @Wiki::Toolkit::TestLib::wiki_info );
    99}
    1010
     
    2626                           $self->{__deleted_nodes} = [ ];
    2727                           $self->{__moderated_nodes} = [ ];
     28                           $self->{__pre_moderated_nodes} = [ ];
    2829                           $self->{__pre_write_nodes} = [ ];
    2930                           $self->{__pre_retrieve_nodes} = [ ];
     
    142143# ===========================================================================
    143144
    144                 # Test the moderation plugin
     145                # Test the moderation plugins
    145146                # (Adds nodes that require moderation and moderates them,
    146                 #  ensuring post_moderate is called with the appropriate options)
     147                #  ensuring pre_moderate and post_moderate are called with
     148                #  the appropriate options)
     149        $plugin->mock( "pre_moderate",
     150                                                sub {
     151                                                        my ($self, %args) = @_;
     152                                                        push @{ $self->{__pre_moderated_nodes} },
     153                                                        { node     => ${$args{node}},
     154                                                          version  => ${$args{version}}
     155                                                        };
     156                                                }
     157        );
    147158        $plugin->mock( "post_moderate",
    148159                                                sub {
     
    156167        );
    157168
     169                # Add
     170        $wiki->write_node( "Test Node 3", "bar" )
     171            or die "Can't write first version node";
     172
    158173                # Moderate
    159         $wiki->moderate_node( name=>"Test Node 2", version=>2 )
     174        $wiki->moderate_node( name=>"Test Node 3", version=>1 )
    160175            or die "Can't moderate node";
     176        ok( $plugin->called("pre_moderate"), "->pre_moderate method called" );
    161177        ok( $plugin->called("post_moderate"), "->post_moderate method called" );
    162178
     179        my @pre_moderated = @{ $plugin->{__pre_moderated_nodes} };
     180        is_deeply( $pre_moderated[0], { node => "Test Node 3",
     181                               version => 1 },
     182                   "...with the right arguments" );
     183
    163184        my @moderated = @{ $plugin->{__moderated_nodes} };
    164         is_deeply( $deleted[0], { node => "Test Node 2",
    165                                node_id => 2,
    166                                version => 2 },
     185        is_deeply( $moderated[0], { node => "Test Node 3",
     186                               node_id => 3,
     187                               version => 1 },
    167188                   "...with the right arguments" );
    168189
     
    202223
    203224        @seen = @{ $plugin->{__seen_nodes} };
    204         is_deeply( $seen[3], { node => "CHANGED_NAME",
    205                                node_id => 3,
     225        is_deeply( $seen[4], { node => "CHANGED_NAME",
     226                               node_id => 4,
    206227                               version => 1,
    207228                               content => "Changed: foo",
Note: See TracChangeset for help on using the changeset viewer.