use warnings;
use strict;
package Wifty::UI;
use base qw/Template::Declare/;
use Template::Declare::Tags;
template simple => sub {
html {
head {};
body { show 'private-content';
show 'other-content'; };
}
};
private template 'private-content' => sub {
with( id => 'private-content-body' ), div {
outs('This is my content');
};
};
private template 'other-content' => sub {
with( id => 'other-content-body' ), div {
outs('This is other content');
};
};
template 'private_not_found' => sub {
show('does_not_exist');
};
package main;
use Template::Declare::Tags;
Template::Declare->init(dispatch_to => ['Wifty::UI']);
use Test::More tests => 14;
use Test::Warn;
require "t/utils.pl";
{
my $simple = ( show('simple') );
like( $simple, qr'This is my content' );
like( $simple, qr'This is other content' );
ok_lint($simple);
}
{
my $simple;
warning_like
{ $simple = ( show('does_not_exist') )||''; }
qr/could not be found.*private/,
"got warning";
unlike( $simple , qr'This is my content' );
ok_lint($simple);
}
{
my $simple;
warning_like
{ $simple = ( show('private_not_found') ); }
qr/could not be found/,
"got warning";
unlike( $simple , qr'This is my content' );
ok_lint($simple);
}
{
my $simple;
warning_like
{ $simple = ( show('private-content') ||''); }
qr/could not be found.*private/,
"got warning";
unlike( $simple , qr'This is my content', "Can't call private templates" );
ok_lint($simple);
}
{
my $simple;
warning_like
{ $simple = ( Template::Declare->show('private-content') ); }
qr/could not be found.*private/,
"got warning";
is($simple, '');
}
1;