App-Sqitch
view release on metacpan or search on metacpan
t/item_formatter.t view on Meta::CPAN
use warnings;
use utf8;
use Test::More tests => 172;
#use Test::More 'no_plan';
use App::Sqitch;
use Locale::TextDomain qw(App-Sqitch);
use Test::NoWarnings;
use Test::Exception;
use Path::Class;
use Term::ANSIColor qw(color);
use App::Sqitch::DateTime;
use Encode;
use lib 't/lib';
use MockOutput;
use TestConfig;
use LC;
local $ENV{TZ} = 'America/Chicago';
my $CLASS = 'App::Sqitch::ItemFormatter';
require_ok $CLASS;
can_ok $CLASS => qw(
new
abbrev
date_format
color
formatter
format
);
isa_ok my $formatter = $CLASS->new, $CLASS, 'Instantiated object';
ok !$formatter->abbrev, 'Should not be abbreviated by default';
is $formatter->date_format, 'iso', 'Default date format should be "iso"';
###############################################################################
# Test all formatting characters.
my $cdt = App::Sqitch::DateTime->now;
my $pdt = $cdt->clone->subtract(days => 1);
my $local_cdt = $cdt->clone;
$local_cdt->set_time_zone('local');
my $local_pdt = $pdt->clone;
$local_pdt->set_time_zone('local');
my $craw = $cdt->as_string( format => 'raw' );
my $event = {
event => 'deploy',
project => 'logit',
change_id => '000011112222333444',
change => 'lolz',
tags => [ '@beta', '@gamma' ],
committer_name => 'larry',
committer_email => 'larry@example.com',
committed_at => $cdt,
planner_name => 'damian',
planner_email => 'damian@example.com',
planned_at => $pdt,
note => "For the LOLZ.\n\nYou know, funny stuff and cute kittens, right?",
requires => [qw(foo bar)],
conflicts => []
};
$_->set_locale($LC::TIME) for ($local_cdt, $local_pdt);
for my $spec (
['%e', { event => 'deploy' }, 'deploy' ],
['%e', { event => 'revert' }, 'revert' ],
['%e', { event => 'fail' }, 'fail' ],
['%L', { event => 'deploy' }, __ 'Deploy' ],
['%L', { event => 'revert' }, __ 'Revert' ],
['%L', { event => 'fail' }, __ 'Fail' ],
['%l', { event => 'deploy' }, __ 'deploy' ],
['%l', { event => 'revert' }, __ 'revert' ],
['%l', { event => 'fail' }, __ 'fail' ],
['%{event}_', {}, __ 'Event: ' ],
['%{change}_', {}, __ 'Change: ' ],
['%{committer}_', {}, __ 'Committer:' ],
['%{planner}_', {}, __ 'Planner: ' ],
['%{by}_', {}, __ 'By: ' ],
['%{date}_', {}, __ 'Date: ' ],
['%{committed}_', {}, __ 'Committed:' ],
['%{planned}_', {}, __ 'Planned: ' ],
['%{name}_', {}, __ 'Name: ' ],
['%{email}_', {}, __ 'Email: ' ],
['%{requires}_', {}, __ 'Requires: ' ],
['%{conflicts}_', {}, __ 'Conflicts:' ],
['%H', { change_id => '123456789' }, '123456789' ],
['%h', { change_id => '123456789' }, '123456789' ],
['%{5}h', { change_id => '123456789' }, '12345' ],
['%{7}h', { change_id => '123456789' }, '1234567' ],
['%n', { change => 'foo' }, 'foo'],
['%n', { change => 'bar' }, 'bar'],
['%o', { project => 'foo' }, 'foo'],
['%o', { project => 'bar' }, 'bar'],
['%F', { deploy_file => 'deploy/change_file.sql' }, 'deploy/change_file.sql'],
['%F', { deploy_file => 'deploy/change_file_with_tag@tag.sql' }, 'deploy/change_file_with_tag@tag.sql'],
['%c', { committer_name => 'larry', committer_email => 'larry@example.com' }, 'larry <larry@example.com>'],
['%{n}c', { committer_name => 'damian' }, 'damian'],
['%{name}c', { committer_name => 'chip' }, 'chip'],
['%{e}c', { committer_email => 'larry@example.com' }, 'larry@example.com'],
['%{email}c', { committer_email => 'damian@example.com' }, 'damian@example.com'],
['%{date}c', { committed_at => $cdt }, $cdt->as_string( format => 'iso' ) ],
['%{date:rfc}c', { committed_at => $cdt }, $cdt->as_string( format => 'rfc' ) ],
['%{d:long}c', { committed_at => $cdt }, $cdt->as_string( format => 'long' ) ],
["%{d:cldr:HH'h' mm'm'}c", { committed_at => $cdt }, $local_cdt->format_cldr( q{HH'h' mm'm'} ) ],
["%{d:strftime:%a at %H:%M:%S}c", { committed_at => $cdt }, $local_cdt->strftime('%a at %H:%M:%S') ],
['%p', { planner_name => 'larry', planner_email => 'larry@example.com' }, 'larry <larry@example.com>'],
['%{n}p', { planner_name => 'damian' }, 'damian'],
['%{name}p', { planner_name => 'chip' }, 'chip'],
['%{e}p', { planner_email => 'larry@example.com' }, 'larry@example.com'],
['%{email}p', { planner_email => 'damian@example.com' }, 'damian@example.com'],
['%{date}p', { planned_at => $pdt }, $pdt->as_string( format => 'iso' ) ],
['%{date:rfc}p', { planned_at => $pdt }, $pdt->as_string( format => 'rfc' ) ],
( run in 0.394 second using v1.01-cache-2.11-cpan-aadc1410aed )