#!/usr/bin/env perl use strict; use warnings; use utf8; use open qw(:std :utf8); use lib 'lib'; use Encode; use JSON; use Test::More tests => 19; # Does the module load? require_ok('App::WRT'); chdir 'example/blog'; # configuration ok( my $w = App::WRT::new_from_file('wrt.json'), "got WRT object." ); # individual subroutine tests my $datestamp = $w->datestamp('2014/1/1/test_entry'); like( $datestamp, qr{test_entry}, 'datestamp for a fragment references that fragment' ) or diag($datestamp); # icon rendering my $with_icon = $w->display('icon_test'); like( $with_icon, qr/img src/, 'icon_test has an image in it' ) or diag($with_icon); my $icon_textfile = $w->icon_markup('icon_test/textfile', 'alt'); is( $icon_textfile, q{alt}, 'got expected icon for icon_test/textfile' ) or diag($icon_textfile); my $icon_dir = $w->icon_markup('icon_test/dir', 'alt'); is( $icon_dir, q{alt}, 'got expected icon for icon_test/dir' ) or diag($icon_dir); my $icon_subentry = $w->icon_markup('icon_test/dir/subentry', 'alt'); is( $icon_subentry, q{alt}, 'got expected icon for icon_test/dir/subentry' ) or diag($icon_subentry); # feed rendering my $with_stars = $w->display('2014/1/2'); like( $with_stars, qr/✨/s, '2014/1/2 contains some stars which we also expect to show up in the feed' ); my $feed = $w->feed_print_recent(); like( $feed, qr/✨/s, 'feed contains some stars' ) or diag($feed); my $json_feed = $w->feed_print_json(); my $JSON = JSON->new->utf8->pretty; my $feed_hashref = $JSON->decode(encode('UTF-8', $json_feed)); ok( length $json_feed, 'got some sort of a JSON Feed' ) or diag($json_feed); ok( defined $feed_hashref->{title}, 'got a JSON Feed with a title' ) or diag($feed_hashref); # not expanding entries with wrt-noexpand my $with_noexpand = $w->display('noexpand_test'); # diag($with_noexpand); unlike( $with_noexpand, qr/SHOULD NOT DISPLAY/, 'noexpand_test does not contain text of sub-entry do_not_expand_me' ) or diag($with_noexpand); # displaying default entry when no entries are given my $with_no_entries = $w->display(); like( $with_no_entries, qr{\Qwrt::new\E}, 'display the default entry (new) when no entries are given' ) or diag($with_no_entries); # contents of year index files my $plaintext_year = $w->display('2012'); like( $plaintext_year, qr/\QI'm a year which is just a flatfile.\E/, "2012 as plaintext year comes through." ) or diag($plaintext_year); my $plaintext_year_index = $w->display('2013'); like( $plaintext_year_index, qr/\QI'm an index file for an entire year.\E/, "2013's plaintext year index comes through." ) or diag($plaintext_year_index); # titles my $title = $w->get_title('2014/1/2'); is( $title, 'Thursday, January 2, 2014', 'got expected title for 2014/1/2' ) or diag($title); # next / prev page navigation my ($page_navigation) = $w->page_navigation('2014/1/2'); like( $page_navigation, qr{2014/1/1}, "got previous title in page navigation for 2014/1/2" ) or diag($page_navigation); $page_navigation = $w->page_navigation('2014/1/1'); like( $page_navigation, qr{2014/1/2}, "got next title in page navigation for 2014/1/2" ) or diag($page_navigation); my ($tag_list) = $w->entry_tag_list('tags_test'); like( $tag_list, qr{animals/platypus}, 'got link to an expected tag index for tags_test' );