Common-CLI

 view release on metacpan or  search on metacpan

t/01-basic.t  view on Meta::CPAN


plan tests => 9;

package My::Application;

use base 'Common::CLI';

package main;

{
    local @ARGV = qw( --help );

    my $app = My::Application->new(
        profile => {
            'optional' => [
                [ 'help', 'Display this help' ],
            ],
        },
    );

    {

t/01-basic.t  view on Meta::CPAN

        # Check validated options
        #
        my $wanted_options = { help => 1, };
        my ( $options ) = $app->validate_options();
        is_deeply( $options, $wanted_options );
    }

}

{
    local @ARGV = qw();

    my $app = My::Application->new(
        profile => {
            'required' => [
                [ 'import=s', 'File to import' ],
            ],
        },
    );

    {
        #
        # Check profile created
        #
        my $wanted_missing = [ 'import' ];
        my ( undef, undef, $missing ) = $app->validate_options();
        is_deeply( $missing, $wanted_missing );
    }
}

{
    local @ARGV = qw();

    my $app = My::Application->new(
        profile => {
            'optional' => [
                [ 'import=s', 'File to import' ],
            ],
            'defaults' => {
                'import' => '/tmp/import.csv',
            },
        },

t/01-basic.t  view on Meta::CPAN

        #
        # Check profile created
        #
        my $wanted_options = { 'import' => '/tmp/import.csv' };
        my $options = $app->validate_options();
        is_deeply( $options, $wanted_options );
    }
}

{
    local @ARGV = qw( --import /tmp/non-existent-file.csv );

    my $app = My::Application->new(
        profile => {
            'required' => [
                [ 'import=s', 'File to import' ],
            ],
            'constraint_methods' => {
                'import' => sub {
                    return;
                },

t/01-basic.t  view on Meta::CPAN

                    return;
                },
            },
        },
    );
}

package main;

{
    local @ARGV = qw( --import /tmp/non-existent-file.csv );

    #
    # Check profile created
    #
    my $app = My::Other::Application->new();
    my $wanted_invalid = [ 'import' ];
    my ( undef, $invalid, undef ) = $app->validate_options();
    is_deeply( [ sort @$invalid ], [ sort @$wanted_invalid ] );
}

t/01-basic.t  view on Meta::CPAN

            'constraint_methods' => {
                'export' => sub { return },
            }
        },
    } );
}

package main;

{
    local @ARGV = qw( --import /tmp/non-existent-file.csv  --export /tmp/file );

    #
    # Check profile created
    #
    my $app = My::Other::Yet::Application->new();
    my $wanted_invalid = [ 'import', 'export' ];
    my ( undef, $invalid, undef ) = $app->validate_options();
    is_deeply( [ sort @$invalid ], [ sort @$wanted_invalid ] );
}



( run in 0.621 second using v1.01-cache-2.11-cpan-49f99fa48dc )