App-Sky

 view release on metacpan or  search on metacpan

t/module.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 14;

use Test::Differences (qw( eq_or_diff ));

use App::Sky::Module    ();
use App::Sky::Exception ();

{
    my $m = App::Sky::Module->new(
        {
            base_upload_cmd        => [qw(rsync -a -v --progress --inplace)],
            dest_upload_prefix     => 'hostgator:public_html/',
            dest_upload_url_prefix => 'http://www.shlomifish.org/',
        }
    );

    # TEST
    ok( $m, 'Module App::Sky::Module was created.' );

    # TEST
    eq_or_diff(
        $m->base_upload_cmd(),
        [qw(rsync -a -v --progress --inplace)],
        "base_upload_cmd was set.",
    );

    {
        my $results = $m->get_upload_results(
            {
                'filenames'  => ['Shine4U.webm'],
                'target_dir' => 'Files/files/video/',
            }
        );

        # TEST
        ok( $results, "Results were returned." );

        # TEST
        eq_or_diff(
            $results->upload_cmd(),
            [
                qw(rsync -a -v --progress --inplace Shine4U.webm hostgator:public_html/Files/files/video/)
            ],
            "results->upload_cmd() is correct.",
        );

        # TEST
        eq_or_diff(
            [ map { $_->as_string() } @{ $results->urls() } ],
            [ 'http://www.shlomifish.org/Files/files/video/Shine4U.webm', ],
            'The result URLs are correct.',
        );
    }

    {
        my $results = $m->get_upload_results(
            {
                'filenames'  => ['../../My-Lemon.webm'],
                'target_dir' => 'Files/files/video/',
            }
        );

        # TEST
        ok( $results, "../../ Results were returned." );

        # TEST
        eq_or_diff(
            $results->upload_cmd(),
            [
                qw(rsync -a -v --progress --inplace ../../My-Lemon.webm hostgator:public_html/Files/files/video/)
            ],
            "../../ results->upload_cmd() is correct.",
        );

        # TEST
        eq_or_diff(
            [ map { $_->as_string() } @{ $results->urls() } ],
            [ 'http://www.shlomifish.org/Files/files/video/My-Lemon.webm', ],
            'URLs for using basename.',
        );
    }

    {
        my $results = $m->get_upload_results(
            {
                'filenames'  => ['/home/shlomif/progs/perl/MetaData.pm'],
                'target_dir' => 'share-dir/code/',
            }
        );

        # TEST
        ok( $results, "Absolute URL - results obj was returned." );

        # TEST
        eq_or_diff(
            $results->upload_cmd(),
            [
                qw(rsync -a -v --progress --inplace /home/shlomif/progs/perl/MetaData.pm hostgator:public_html/share-dir/code/)
            ],
            "Absolute URL - results->upload_cmd() is correct.",
        );

        # TEST
        eq_or_diff(
            [ map { $_->as_string() } @{ $results->urls() } ],
            [ 'http://www.shlomifish.org/share-dir/code/MetaData.pm', ],
            'Absolute URL - URLs for using basename.',
        );
    }

}

{
    my $m = App::Sky::Module->new(
        {
            base_upload_cmd        => [qw(rsync -a -v --progress --inplace)],
            dest_upload_prefix     => 'shlomif@perl-begin.org:sites/perl-begin',
            dest_upload_url_prefix => 'http://perl-begin.org/',
        }
    );

    {
        eval {
            my $results = $m->get_upload_results(
                {
                    'filenames'  => ['/home/shlomif/progs/foo:bar.pm'],
                    'target_dir' => 'Files/files/code/',
                }
            );
        };

        my $E = $@;

        # TEST
        ok( $E, 'An exception was thrown.' );

        # TEST
        isa_ok(
            $E,
            'App::Sky::Exception::Upload::Filename::InvalidChars',
            'Exception is right.'
        );

        # TEST
        eq_or_diff( $E->invalid_chars(), [':'],
            "Invalid characters is fine.", );
    }
}



( run in 1.303 second using v1.01-cache-2.11-cpan-b16cb0d3907 )