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

use strict;

use Test::More qw/no_plan/;
use t::Test;
#use JSON::XS;
#my $json = JSON::XS->new->allow_blessed->pretty;
my $scratch = t::Test::Scratch->new;

sub assets {
    my $assets = File::Assets->new(base => [ "http://example.com/", $scratch->base, "/static" ], @_);
    $assets->include("css/apple.css");
    $assets->include("css/banana.css");
    $assets->include("js/apple.js");
    return ($scratch, $assets);
}
{
    my ($scratch, $assets) = assets;

    $assets->include("http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js", -100);
    compare($assets->export, qw(
        http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
        http://example.com/static/css/apple.css
        http://example.com/static/css/banana.css
        http://example.com/static/js/apple.js
    ));
}

{
    my ($scratch, $assets) = assets(qw(output_path %n%-l.%e minify concat));

    $assets->include("http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js");
    compare($assets->export, qw(
        http://example.com/static/assets.css
        http://example.com/static/assets.js
        http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
    ));
}

{
    my ($scratch, $assets) = assets(qw(output_path %n%-l.%e minify concat));

    $assets->include("http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js", -100);
    compare($assets->export, qw(
        http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
        http://example.com/static/assets.css
        http://example.com/static/assets.js
    ));
}