The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More;
use Test::Deep;
plan qw/no_plan/;
use Directory::Scratch;
my $scratch = Directory::Scratch->new;
my $base = $scratch->base;
sub file { return $base->file(@_) }

use JS::jQuery::Loader::Source::URI;
use JS::jQuery::Loader::Cache::URI;

my $template = JS::jQuery::Loader::Template->new(version => "1.2.3");
my $uri = "http://jqueryjs.googlecode.com/files/\%j";
my $source = JS::jQuery::Loader::Source::URI->new(template => $template, uri => $uri);
my $cache = JS::jQuery::Loader::Cache::URI->new(source => $source, file => "$base/\%j", uri => "http://example.com/t/\%j");
ok($cache);

SKIP: {
    $ENV{TEST_RELEASE} or skip "Not testing going out to the Internet ($uri)";
    
    is($cache->uri, "http://example.com/t/jquery-1.2.3.js");
    is($cache->file, file "jquery-1.2.3.js");

    $cache = JS::jQuery::Loader::Cache::URI->new(source => $source, file => "$base/\%l", uri => "http://example.com/t/\%l");

    is($cache->uri, "http://example.com/t/jquery-1.2.3.js");
    is($cache->file, file "jquery-1.2.3.js");
    ok(-s $cache->file);

    $cache->uri("http://example.com/t\%/v/\%j");
    is($cache->uri, "http://example.com/t/1.2.3/jquery-1.2.3.js");

    $template->version(undef);

    $cache->recalculate;
    is($cache->uri, "http://example.com/t/jquery.js");

    $template->version("1.2.3");
    $cache = JS::jQuery::Loader::Cache::URI->new(source => $source, template => $template,
        location => "js/jq\%-v.js",
        uri => "http://localhost/assets/\%l",
        file => $base->file("htdocs/static/\%l"),

    );
    is($cache->location->location, "js/jq-1.2.3.js");
    is($cache->file, $base->file("htdocs/static/js/jq-1.2.3.js"));
    is($cache->uri, "http://localhost/assets/js/jq-1.2.3.js");

}