use strict; use Wiki::Toolkit::Setup::SQLite; use OpenGuides; use OpenGuides::Test; use Test::More; eval { require DBD::SQLite; }; if ( $@ ) { my ($error) = $@ =~ /^(.*?)\n/; plan skip_all => "DBD::SQLite could not be used - no database to test with. ($error)"; } plan tests => 15; SKIP: { # Clear out the database from any previous runs. OpenGuides::Test::refresh_db(); my $config = OpenGuides::Test->make_basic_config; my $guide = OpenGuides->new( config => $config ); my $wiki = $guide->wiki; # Test @INDEX_LINK $wiki->write_node( "Test 1", "\@INDEX_LINK [[Category Foo]]" ) or die "Can't write node"; $wiki->write_node( "Test 2", "\@INDEX_LINK [[Category Bar|Bars]]" ) or die "Can't write node"; my $output; $output = $guide->display_node( return_output => 1, id => "Test 1", ); like( $output, qr/View all pages in Category Foo/, "\@INDEX_LINK has right default link text" ); $output = $guide->display_node( return_output => 1, id => "Test 2", ); like( $output, qr/>Bars<\/a>/, "...and can be overridden" ); # Test @INDEX_LIST $wiki->write_node( "Test 3", "\@INDEX_LIST [[Category Foo]]" ) or die "Can't write node"; $wiki->write_node( "Test 4", "\@INDEX_LIST [[Locale Bar]]" ) or die "Can't write node"; $wiki->write_node( "Test 5", "\@INDEX_LIST [[Category Nonexistent]]" ) or die "Can't write node"; $wiki->write_node( "Test 6", "\@INDEX_LIST [[Locale Nonexistent]]" ) or die "Can't write node"; $wiki->write_node( "Wibble", "wibble", undef, { category => "foo", locale => "bar", } ) or die "Can't write node"; $output = $guide->display_node( return_output => 1, id => "Test 3", ); like ( $output, qr|Wibble|, '@INDEX_LIST works for categories' ); $output = $guide->display_node( return_output => 1, id => "Test 5", ); like ( $output, qr|No pages currently in category|, "...and fails nicely if no pages in category" ); $output = $guide->display_node( return_output => 1, id => "Test 4", ); like ( $output, qr|Wibble|, '@INDEX_LIST works for locales' ); $output = $guide->display_node( return_output => 1, id => "Test 6", ); like ( $output, qr|No pages currently in locale|, "...and fails nicely if no pages in locale" ); # Test @MAP_LINK OpenGuides::Test->write_data( guide => $guide, node => "Test 1", content => "\@MAP_LINK [[Category Foo]]", return_output => 1, ); OpenGuides::Test->write_data( guide => $guide, node => "Test 2", content => "\@MAP_LINK [[Category Foo|Map]]", return_output => 1, ); $output = $guide->display_node( return_output => 1, id => "Test 1", ); like( $output, qr/View map of pages in Category Foo/, "\@MAP_LINK has right default link text" ); $output = $guide->display_node( return_output => 1, id => "Test 2", ); like( $output, qr/>Map<\/a>/, "...and can be overridden" ); # Test @RANDOM_PAGE_LINK OpenGuides::Test->write_data( guide => $guide, node => "Test Random", content => "\@RANDOM_PAGE_LINK", return_output => 1, ); $output = $guide->display_node( return_output => 1, id => "Test Random", ); like( $output, qr/View a random page on this guide/, "\@RANDOM_PAGE_LINK has right default link text" ); # Not sure yet how to let people override link text in the above. TODO. OpenGuides::Test->write_data( guide => $guide, node => "Test Random", content => "\@RANDOM_PAGE_LINK " . "[[Category Pubs]]", return_output => 1, ); $output = $guide->display_node( return_output => 1, id => "Test Random", ); like( $output, qr/View a random page in Category Pubs/, "\@RANDOM_PAGE_LINK has right default link text for categories" ); OpenGuides::Test->write_data( guide => $guide, node => "Test Random", content => "\@RANDOM_PAGE_LINK " . "[[Category Pubs|Random pub]]", return_output => 1, ); $output = $guide->display_node( return_output => 1, id => "Test Random", ); like( $output, qr/>Random pub<\/a>/, "...and can be overridden" ); OpenGuides::Test->write_data( guide => $guide, node => "Test Random", content => "\@RANDOM_PAGE_LINK " . "[[Locale Fulham]]", return_output => 1, ); $output = $guide->display_node( return_output => 1, id => "Test Random", ); like( $output, qr/View a random page in Locale Fulham/, "\@RANDOM_PAGE_LINK has right default link text for categories" ); OpenGuides::Test->write_data( guide => $guide, node => "Test Random", content => "\@RANDOM_PAGE_LINK " . "[[Locale Fulham|" . "Random thing in Fulham]]", return_output => 1, ); $output = $guide->display_node( return_output => 1, id => "Test Random", ); like( $output, qr/>Random thing in Fulham<\/a>/, "...and can be overridden" ); # Test @INCLUDE_NODE OpenGuides::Test->write_data( guide => $guide, node => "Test 1", content => "Hello, I am Test 1!\r\n" . "\@INCLUDE_NODE [[Test 2]]", return_output => 1, ); OpenGuides::Test->write_data( guide => $guide, node => "Test 2", content => "Hello, I am Test 2!", return_output => 1, ); $output = $guide->display_node( return_output => 1, id => "Test 1", ); like( $output, qr/Hello, I am Test 1!/, "Node with \@INCLUDE_NODE has its own content" ); like( $output, qr/Hello, I am Test 2!/, "...and the included content" ); }