use Modern::Perl;

use Test::More tests => 3;

use C4::Dates qw(format_date_in_iso);
use Koha::DateUtils;

my $dates = { metric => '31/01/2014', us => '01/31/2014', iso => '2015-01-30' };
for my $dateformat (qw( metric us iso )) {
    my $iso           = $dates->{iso};
    my $formatted_date = $dates->{$dateformat};

    subtest $dateformat => sub {
        plan tests => 7;
        is( C4::Dates->new->output('iso'), output_pref( { dt => dt_from_string, dateformat => 'iso', dateonly => 1 } ), 'new iso' );

        is( C4::Dates->new($formatted_date)->output('iso'), output_pref({ dt => dt_from_string( $formatted_date ), dateformat => 'iso', dateonly => 1 }), 'formatted to iso' );

        is( C4::Dates->new( $iso, 'iso' )->output('iso'), output_pref( { dt => dt_from_string( $iso, 'iso' ), dateformat => 'iso', dateonly => 1 } ), 'iso iso to iso' );

        is( C4::Dates->today('iso'), output_pref( { dt => dt_from_string, dateformat => 'iso', dateonly => 1 } ), 'today to iso' );

        is( C4::Dates->new( $iso, 'iso' )->output("iso"), output_pref( { dt => dt_from_string($iso), dateformat => 'iso', dateonly => 1 } ), 'iso iso to iso (without iso)' );

        is( C4::Dates->new( $iso, 'iso' )->output, output_pref( { dt => dt_from_string($iso), dateformat => 'iso', dateonly => 1 } ), 'iso iso to pref' );

        is( format_date_in_iso( $formatted_date ), output_pref({ dt => dt_from_string( $formatted_date ), dateformat => 'iso', dateonly => 1 } ), 'format_date_in_iso formatted' );
    };

}
