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 => ( 4 * scalar @Wiki::Toolkit::TestLib::wiki_info );
}
my $iterator = Wiki::Toolkit::TestLib->new_wiki_maker;
my $metadata_orig = { foo => [ 7 ], bar => [ 9 ] };
my $metadata_changed = { foo => [ "changed" ], bar => [ 9 ] };
my $content_orig = "Node content.";
my $content_changed = "Node content -- changed";
my $id = "A Node";
while ( my $wiki = $iterator->new_wiki ) {
$wiki->write_node($id, $content_orig, undef, $metadata_orig );
my %node_data = $wiki->retrieve_node($id);
is( $wiki->write_node(
$id, $content_orig, $node_data{checksum},
$metadata_orig,
),
-1,
"refuses to update if new content and metadata is the same",
);
%node_data = $wiki->retrieve_node($id);
ok( $wiki->write_node(
$id, $content_orig, $node_data{checksum},
$metadata_changed,
) >= 1,
"still updates if metadata is different",
);
%node_data = $wiki->retrieve_node($id);
ok( $wiki->write_node(
$id, $content_changed, $node_data{checksum},
$metadata_changed,
) >= 1,
"still updates if content is different",
);
%node_data = $wiki->retrieve_node($id);
is( $wiki->write_node(
$id, $content_changed, $node_data{checksum},
$metadata_changed,
),
-1,
"... and refuses again when nothing changed",
);
}