The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
use File::Temp qw/ tempfile tempdir /;
has converted_excerpt_regexp => (
is => 'ro' ,
isa => 'RegexpRef' ,
lazy => 1 ,
default => sub { shift->converted_content_regexp }
);
has output_regexp => (
is => 'ro' ,
isa => 'RegexpRef' ,
required => 1 ,
);
has subject => (
is => 'ro' ,
isa => 'HiD::Post' ,
required => 1 ,
);
test "has converted excerpt" => sub {
my $test = shift;
my $subject = $test->subject;
like( $subject->converted_excerpt , $test->converted_excerpt_regexp );
};
test "output filename" => sub {
my $test = shift;
my $subject = $test->subject;
my $permalink = $subject->get_metadata( 'permalink' ) // 'none';
SKIP:{
skip "invalid if permalink" , 2
unless ( $permalink eq 'none' or $permalink eq 'pretty' );
like( $subject->output_filename , qr|.html$| , 'ends in html' );
SKIP: {
skip "invalid if date set" , 1
if ( $subject->get_metadata( 'date') );
my( $year , $month , $day ) = $subject->input_filename
=~ /([0-9]{4})-([0-9]{2})-([0-9]{2})-/;
like( $subject->output_filename , qr|$year/$month/$day/| ,
'contains date parts');
}
};
};
test "publish" => sub {
my $test = shift;
my $subject = $test->subject;
my $output = $subject->output_filename;
file_not_exists_ok( $output , 'no output yet' );
$subject->publish;
file_exists_ok( $output , 'and now output' );
file_contains_like( $output , $test->output_regexp );
};