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 => ( 9 * 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. $wiki->write_node( "Reun Thai", "A restaurant", undef, { postcode => "W6 9PL", category => [ "Thai Food", "Restaurant", "Hammersmith" ], latitude => "51.911", longitude => "" } ); $wiki->write_node( "GBK", "A burget restaurant", undef, { postcode => "OX1 2AY", category => [ "Burgers", "Restaurant", "Oxford" ] }); # And one with an un-moderated version $wiki->write_node( "Cafe Roma", "A cafe", undef, { category => [ "Cafe", "Oxford" ], latitude => "51.759", longitude => "-1.270" }, 1 ); $wiki->moderate_node("Cafe Roma", 1); my %node = $wiki->retrieve_node( "Cafe Roma" ); $wiki->write_node( "Cafe Roma", "A cafe unmod", $node{"checksum"}, { category => [ "Cafe", "Oxford", "Unmoderated", "NotSeen" ], latitude => "51.759", longitude => "-1.270", locale => [ "Oxford" ] }, ); my @md; # With nothing, get back undef is($wiki->store->list_metadata_by_type(), undef, "Needs a type given"); # Postcode should be easy @md = $wiki->store->list_metadata_by_type("postcode"); is_deeply( [sort @md], [ "OX1 2AY", "W6 9PL" ], "Correct metadata listing" ); # Latitude also @md = $wiki->store->list_metadata_by_type("latitude"); is_deeply( [sort @md], [ "51.759", "51.911" ], "Correct metadata listing" ); # For category, will not see unmoderated versio @md = $wiki->store->list_metadata_by_type("category"); is_deeply( [sort @md], [ "Burgers", "Cafe", "Hammersmith", "Oxford", "Restaurant", "Thai Food" ], "Correct metadata listing" ); @md = $wiki->store->list_metadata_names(); is_deeply( [sort @md], [ "category", "latitude", "longitude", "postcode" ], "Correct metadata names" ); # Now moderate that one, see it come in $wiki->moderate_node("Cafe Roma", 2); @md = $wiki->store->list_metadata_by_type("category"); is_deeply( [sort @md], [ "Burgers", "Cafe", "Hammersmith", "NotSeen", "Oxford", "Restaurant", "Thai Food", "Unmoderated" ], "Correct metadata listing" ); @md = $wiki->store->list_metadata_names(); is_deeply( [sort @md], [ "category", "latitude", "locale", "longitude", "postcode" ], "Correct metadata names" ); # And un-moderate another, see its go away $wiki->store->dbh->do("UPDATE content SET moderated = 'f' WHERE version = 2"); @md = $wiki->store->list_metadata_by_type("category"); is_deeply( [sort @md], [ "Burgers", "Cafe", "Hammersmith", "Oxford", "Restaurant", "Thai Food" ], "Correct metadata listing" ); @md = $wiki->store->list_metadata_names(); is_deeply( [sort @md], [ "category", "latitude", "longitude", "postcode" ], "Correct metadata names" ); }