use DateTime::TimeZone;
use C4::Context;
-use Test::More tests => 58;
+
+use Test::More tests => 60;
+
use Test::MockModule;
use Test::Warn;
use Time::HiRes qw/ gettimeofday /;
cmp_ok( $new_dt->ymd(), 'eq', $testdate_iso,
'Returned Dublin object matches input' );
-for ( qw/ 2014-01-01 2100-01-01 9999-01-01 / ) {
- my $duration = gettimeofday();
- $new_dt = dt_from_string($_, 'iso', $dear_dirty_dublin);
- $duration = gettimeofday() - $duration;
- cmp_ok $duration, '<', 1, "Create DateTime with dt_from_string() for $_ with TZ in less than 1s";
- $duration = gettimeofday();
- output_pref( { dt => $new_dt } );
- $duration = gettimeofday() - $duration;
- cmp_ok $duration, '<', 1, "Create DateTime with output_pref() for $_ with TZ in less than 1s";
-}
+SKIP: {
+ skip "Don't test execution time of dt_from_string on slow servers", 6 if $ENV{SLOW_SERVER};
+ for ( qw/ 2014-01-01 2100-01-01 9999-01-01 / ) {
+ my $duration = gettimeofday();
+ $new_dt = dt_from_string($_, 'iso', $dear_dirty_dublin);
+ $duration = gettimeofday() - $duration;
+ cmp_ok $duration, '<', 1, "Create DateTime with dt_from_string() for $_ with TZ in less than 1s";
+ $duration = gettimeofday();
+ output_pref( { dt => $new_dt } );
+ $duration = gettimeofday() - $duration;
+ cmp_ok $duration, '<', 1, "Create DateTime with output_pref() for $_ with TZ in less than 1s";
+ }
+};
$new_dt = dt_from_string( '2011-06-16 12:00', 'sql' );
isa_ok( $new_dt, 'DateTime', 'Create DateTime from (mysql) sql' );
$new_dt = dt_from_string( $dt, 'iso' );
isa_ok( $new_dt, 'DateTime', 'Passed a DateTime dt_from_string returns it' );
-# C4::Dates allowed 00th of the month
-
my $ymd = '2012-01-01';
my $dt0 = dt_from_string( '00/01/2012', 'metric' );
isa_ok( $dt0, 'DateTime',
is( ref($dt), '', '31/01/2015 is not a correct date in us format' );
$dt = dt_from_string( '01/01/2015', 'us' );
is( ref($dt), 'DateTime', '01/01/2015 is a correct date in us format' );
+$dt = dt_from_string( '01.01.2015', 'dmydot' );
+is( ref($dt), 'DateTime', '01.01.2015 is a correct date in dmydot format' );
# default value for hh and mm is 00:00
is( output_pref( {dt => $dt} ), '31/01/2015 01:02', 'dt_from_string should fallback to sql format' );
# output_pref with str parameter
-is( output_pref( { 'str' => $testdate_iso, dateformat => 'iso', dateonly => 1 } ), $testdate_iso, 'output_pref should handle correctly the iso parameter' );
-is( output_pref( { 'str' => 'invalid_date', dateformat => 'iso', dateonly => 1 } ), undef, 'output_pref should return undef if an invalid date is passed' );
+is( output_pref( { 'str' => $testdate_iso, dateformat => 'iso', dateonly => 1 } ), $testdate_iso, 'output_pref should handle correctly the iso parameter' );
+my $output_for_invalid_date;
+warning_like { $output_for_invalid_date = output_pref( { str => 'invalid_date' } ) }
+ { carped => qr[^Invalid date 'invalid_date' passed to output_pref] },
+ 'output_pref should carp if an invalid date is passed for the str parameter';
+is( $output_for_invalid_date, undef, 'output_pref should return undef if an invalid date is passed' );
warning_is { output_pref( { 'str' => $testdate_iso, dt => $dt, dateformat => 'iso', dateonly => 1 } ) }
{ carped => 'output_pref should not be called with both dt and str parameters' },
'output_pref should carp if str and dt parameters are passed together';