The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use strict;
use warnings;

use Test::More;
use Test::Exception;

use Path::Class;
use File::Temp;
use URI;

use Pinto::Config;

#------------------------------------------------------------------------------

subtest 'Default config' => sub {

    my %cases = (
        root    => 'nowhere',
        sources => 'http://cpan.perl.org http://backpan.perl.org',
    );

    my $cfg = Pinto::Config->new( root => 'nowhere' );
    while ( my ( $method, $expect ) = each %cases ) {
        my $msg = "Got default value for '$method'";
        is( $cfg->$method(), $expect, $msg );
    }
};

#------------------------------------------------------------------------------

subtest 'Custom config' => sub {

    my %cases = (
        root    => 'nowhere',
        sources => 'http://cpan.pair.com  http://metacpan.org',
    );

    my $cfg = Pinto::Config->new(%cases);
    while ( my ( $method, $expect ) = each %cases ) {
        my $msg = "Got custom value for '$method'";
        is( $cfg->$method(), $expect, $msg );
    }
};

#------------------------------------------------------------------------------

subtest 'Multiple sources' => sub {

    my $expect = [ map { URI->new($_) } qw(here there) ];

    my $cfg1 = Pinto::Config->new( root => 'anywhere', sources => 'here there' );
    is_deeply( [ $cfg1->sources_list ], $expect, 'Parsed sources list' );

    my $cfg2 = Pinto::Config->new( root => 'anywhere', sources => q{"here there"} );
    is_deeply( [ $cfg2->sources_list ], $expect, 'Parsed sources list, with quotes' );
};

#------------------------------------------------------------------------------

done_testing;