#!/usr/bin/env perl
# vim: ts=8 sts=4 et sw=4 sr sta
use strict;
use warnings;
use File::Find;
use Path::Class;
use Test::More tests => 21;
BEGIN {
use FindBin;
use lib qq{$FindBin::Bin/testlib};
use Zucchini::TestConfig;
use Zucchini::Test;
}
BEGIN {
use_ok 'Zucchini::Template';
}
can_ok(
'Zucchini::Template',
qw(
new
get_config
set_config
get_ttobject
set_ttobject
directory_contents
file_checksum
file_modified
ignore_directory
ignore_file
item_name
process_directory
process_file
process_site
relative_path_from_full
same_file
show_destination
template_file
_prepare_template_object
)
);
# evil globals
my ($zucchini_tpl, $test_config, @input_tree, @output_tree, $zucchini_cfg);
my ($tpl_object, $tt_service);
# get a test_config object
$test_config = Zucchini::TestConfig->new();
isa_ok($test_config, q{Zucchini::TestConfig});
# create a ::Template object
$zucchini_tpl = Zucchini::Template->new(
{
config => $test_config->get_config,
}
);
isa_ok($zucchini_tpl, q{Zucchini::Template});
ok(defined($zucchini_tpl->get_config), q{object has configuration data});
# perform the magic
$zucchini_tpl->process_site;
# make sure we get "what we expect" in the output directory
Zucchini::Test::compare_input_output($zucchini_tpl->get_config);
# the current/default ::Template should NOT have any tt_options
is (
ref($zucchini_tpl->get_config->get_siteconfig()->{tt_options}),
q{},
q{default site has NO tt_options}
);
#
# test tt settings without any overrides in the config
#
# grab the TT object
$tpl_object = $zucchini_tpl->get_ttobject;
isa_ok($tpl_object, 'Template');
# grab the "service"
$tt_service = $tpl_object->service;
isa_ok($tt_service, 'Template::Service');
# we should have nothing in PRE_PROCESS
is(
scalar @{ $tt_service->{PRE_PROCESS} },
0,
q{PRE_PROCESS is empty}
);
# we should have "my_header" in the pre-process
is(
scalar @{ $tt_service->{POST_PROCESS} },
0,
q{POST_PROCESS is empty}
);
# we should have disabled eval perl
is(
$tt_service->context->{EVAL_PERL},
0,
q{EVAL_PERL is enabled}
);
#
# Test: TT_OPTIONS
#
# create a ::Template object
$zucchini_cfg = Zucchini::Config->new(
{
config_data => $test_config->site_config,
site => q{ttoption_site},
}
);
isa_ok($zucchini_cfg, q{Zucchini::Config});
$zucchini_tpl = Zucchini::Template->new(
{
config => $zucchini_cfg,
}
);
isa_ok($zucchini_tpl, q{Zucchini::Template});
ok(defined($zucchini_tpl->get_config), q{object has configuration data});
# does it have tt_options?
is (
ref($zucchini_tpl->get_config->get_siteconfig()->{tt_options}),
q{HASH},
q{ttoption_site has tt_options}
);
# manually set the ttobject (usually happens "as required" in process_file()
$zucchini_tpl->_prepare_template_object;
# grab the TT object
$tpl_object = $zucchini_tpl->get_ttobject;
isa_ok($tpl_object, 'Template');
# grab the "service"
$tt_service = $tpl_object->service;
isa_ok($tt_service, 'Template::Service');
# we should have "my_header" in the pre-process
ok(
grep { m{\Amy_header\z} }
@{ $tt_service->{PRE_PROCESS} },
q{PRE_PROCESS contains my_header}
);
# we should have "my_header" in the pre-process
ok(
grep { m{\Amy_footer\z} }
@{ $tt_service->{POST_PROCESS} },
q{POST_PROCESS contains my_footer}
);
# we should have enabled eval perl
is(
$tt_service->context->{EVAL_PERL},
1,
q{EVAL_PERL is enabled}
);