File: 002_basic_invocation.t

package info (click to toggle)
libwiki-toolkit-plugin-json-perl 0.05-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 92 kB
  • sloc: perl: 100; makefile: 2
file content (72 lines) | stat: -rw-r--r-- 2,170 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use strict;
use JSON;
use Test::More;
use Wiki::Toolkit::Plugin::JSON;
#use Wiki::Toolkit::TestLib;

eval "use Wiki::Toolkit::TestLib";
plan skip_all => "Wiki::Toolkit::TestLib needed to run tests" if $@;

if ( scalar @Wiki::Toolkit::TestLib::wiki_info == 0 ) {
    plan skip_all => "no backends configured";
} else {
    plan tests => ( 4 * 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, sleeping for at least a second in between each.
    my @nodes = ( "1st Node", "2nd Node", "3rd Node" );
    my $start_time = time;

    foreach my $node ( @nodes ) {
        my %node_data = $wiki->retrieve_node( $node );
        $wiki->write_node( $node, "Stuff.", $node_data{checksum} );
        do_sleep();
    }

    # Now test the JSON Recent Changes output.
    my $json = Wiki::Toolkit::Plugin::JSON->new(
        wiki => $wiki,
        site_name => "My Wiki",
        site_url => "http://example.com/",
        make_node_url => sub {
            my ( $node_name, $version ) = @_;
            $node_name =~ s/\s+/_/g; # quick and dirty
            if ( $version ) {
                return "http://example.com/?id=$node_name;version=$version";
            } else {
                return "http://example.com/?id=$node_name";
            }
        },
        recent_changes_link => "http://example.com/?RecentChanges",
    );

    my $output = eval {
           local $SIG{__WARN__} = sub { die $_[0]; };
            $json->recent_changes;
    };
    ok( !$@, "->recent_changes() doesn't warn." );

SKIP: {
        eval "use Test::JSON";

        skip "Test::JSON not installed", 1 if $@;

        is_valid_json( $output, "is well formed json");
      };

    my $parsed = eval {
           local $SIG{__WARN__} = sub { die $_[0]; };
           decode_json( $output );
    };
    ok( !$@, "...and its output looks like JSON." );
    is( scalar @$parsed, 3, "...and has the right number of nodes." );
}

sub do_sleep {
    my $slept = sleep( 2 );
    warn "Slept for less than a second; test results may be unreliable"
        unless $slept >= 1;
}