subtest
"css_files"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
reset
=>
'reset'
,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
ok
$css
->check,
'check'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [ obj_isa(
'Path::Tiny'
), ignore(), 773 ],
},
"css_files"
;
is
$files
->{
reset
}->[0]->
stringify
=>
"t/etc/css/reset.min.css"
,
"path"
;
is
$files
->{
reset
}->[1] =>
"reset.min.css"
,
"filename"
;
};
subtest
"css_files (alias => 1)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
reset
=> 1,
gone1
=> 0,
gone2
=>
''
,
gone3
=>
undef
,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
ok
$css
->check,
'check'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [ obj_isa(
'Path::Tiny'
), ignore(), 773 ],
gone1
=> [
undef
,
undef
, 0 ],
gone2
=> [
undef
,
undef
, 0 ],
gone3
=> [
undef
,
undef
, 0 ],
},
"css_files"
;
is
$files
->{
reset
}->[0]->
stringify
=>
"t/etc/css/reset.min.css"
,
"path"
;
is
$files
->{
reset
}->[1] =>
"reset.min.css"
,
"filename"
;
};
subtest
"css_files (1.css fails)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
one
=> 1,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
throws_ok {
$css
->check;
}
qr/alias 'one' refers to a non-existent file/
;
throws_ok {
$css
->css_files;
}
qr/alias 'one' refers to a non-existent file/
;
};
subtest
"css_files (1.css workaround)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
one
=>
"1.css"
,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
one
=> [ obj_isa(
'Path::Tiny'
),
'1.css'
, 17 ],
},
"css_files"
;
is
$files
->{one}->[0]->
stringify
=>
"t/etc/css/1.css"
,
"path"
;
};
subtest
"css_files (prefer_min=0)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
reset
=>
'reset'
,
},
prefer_min
=> 0,
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [ obj_isa(
'Path::Tiny'
), ignore(), 1089 ],
},
"css_files"
;
is
$files
->{
reset
}->[0]->
stringify
=>
"t/etc/css/reset.css"
,
"path"
;
is
$files
->{
reset
}->[1] =>
"reset.css"
,
"filename"
;
};
subtest
"css_files (prefer_min=0 works when there is only min)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
bar
=> 1
},
prefer_min
=> 0,
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
bar
=> ignore() },
"css_files"
;
is
$files
->{bar}->[0]->
stringify
=>
"t/etc/css/bar.min.css"
,
"path"
;
is
$files
->{bar}->[1] =>
"bar.min.css"
,
"filename"
;
};
subtest
"css_files (full name)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
prefer_min
=> 0,
aliases
=> {
reset
=>
'reset.css'
,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [ obj_isa(
'Path::Tiny'
), ignore(), 1089 ],
},
"css_files"
;
is
$files
->{
reset
}->[0]->
stringify
=>
"t/etc/css/reset.css"
,
"path"
;
is
$files
->{
reset
}->[1] =>
"reset.css"
,
"filename"
;
};
subtest
"css_files (full name)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
reset
=>
'reset.min.css'
,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [ obj_isa(
'Path::Tiny'
), ignore(), 773 ],
},
"css_files"
;
is
$files
->{
reset
}->[0]->
stringify
=>
"t/etc/css/reset.min.css"
,
"path"
;
is
$files
->{
reset
}->[1] =>
"reset.min.css"
,
"filename"
;
};
subtest
"css_files (bad css_root)"
=>
sub
{
dies_ok {
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/cssx'
,
aliases
=> {
reset
=>
'resetx'
,
},
);
}
'constructor died'
;
};
subtest
"css_files (bad filename)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
reset
=>
'resetx'
,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
throws_ok {
$css
->check
}
qr/alias 'reset' refers to a non-existent file/
;
throws_ok {
$css
->css_files
}
qr/alias 'reset' refers to a non-existent file/
;
};
subtest
"css_files (URI)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [
undef
, ignore(), ignore() ],
},
"css_files"
;
};
subtest
"css_files (URI)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {
reset
=>
'//cdn.example.com/reset.css'
,
},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [
undef
, ignore(), ignore() ],
},
"css_files"
;
is
$files
->{
reset
}->[1] =>
"//cdn.example.com/reset.css"
,
"uri"
;
};
subtest
"css_files (array ref)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> [
qw[ reset ]
],
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
my
$files
=
$css
->css_files;
cmp_deeply
$files
, {
reset
=> [ obj_isa(
'Path::Tiny'
), ignore(), 773 ],
},
"css_files"
;
is
$files
->{
reset
}->[0]->
stringify
=>
"t/etc/css/reset.min.css"
,
"path"
;
is
$files
->{
reset
}->[1] =>
"reset.min.css"
,
"filename"
;
};
subtest
"css_files (no files)"
=>
sub
{
my
$css
= HTML::DeferableCSS->new(
css_root
=>
't/etc/css'
,
aliases
=> {},
);
isa_ok
$css
,
'HTML::DeferableCSS'
;
throws_ok {
$css
->check
}
qr/no aliases/
;
lives_ok {
$css
->css_files
}
'css_files lives ok'
;
};
done_testing;