#!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 ($cache, $asset, $content, $digest, $size, $mtime);
{
diag "First assets";
my ($scratch, $assets) = assets(qw(output_path %n%-l.%e minify concat));
compare($assets->export, qw(
http://example.com/static/assets.css
http://example.com/static/assets.js
));
ok($scratch->exists("static/assets.css"));
cmp_ok(-s $scratch->file("static/assets.css"), '>=' => 64);
$cache = $assets->cache;
$asset = $assets->fetch("/static/css/apple.css");
$content = $asset->_content;
}
{
diag "Second assets";
my ($scratch, $assets) = assets(qw(output_path %n%-l.%e minify concat));
compare($assets->export, qw(
http://example.com/static/assets.css
http://example.com/static/assets.js
));
ok($scratch->exists("static/assets.css"));
cmp_ok(-s $scratch->file("static/assets.css"), '>=' => 64);
is($cache, $assets->cache);
isnt($asset, $assets->fetch("/static/css/apple.css"));
is($content, $assets->fetch("/static/css/apple.css")->_content);
is($asset->digest, $assets->fetch("/static/css/apple.css")->digest);
$digest = $asset->digest;
}
{
diag "Third assets, alter 'apple.css'";
$scratch->write("static/css/apple.css", <<_END_);
/* This is custom.css */
_END_
my ($scratch, $assets) = assets(qw(output_path %n%-l.%e minify concat));
compare($assets->export, qw(
http://example.com/static/assets.css
http://example.com/static/assets.js
));
ok($scratch->exists("static/assets.css"));
cmp_ok(-s $scratch->file("static/assets.css"), '>=' => 64);
is($cache, $assets->cache);
isnt($asset, $assets->fetch("/static/css/apple.css"));
is($content, $assets->fetch("/static/css/apple.css")->_content);
isnt($digest, $assets->fetch("/static/css/apple.css")->digest);
$asset = $assets->fetch("/static/css/apple.css");
$digest = $asset->digest;
}
{
diag "Fourth assets";
my ($scratch, $assets) = assets(qw(output_path %n%-l.%e minify concat));
compare($assets->export, qw(
http://example.com/static/assets.css
http://example.com/static/assets.js
));
ok($scratch->exists("static/assets.css"));
cmp_ok(-s $scratch->file("static/assets.css"), '>=' => 64);
is($digest, $assets->fetch("/static/css/apple.css")->digest);
$digest = $asset->digest;
}