File Coverage

File:t/0-basic.t
Coverage:100.0%

linestmtbrancondsubpodtimecode
1
1
1
1
1272034648562804
13468
10
use Test::More;
2
1
1
1
481
2137
6
use Test::Exception;
3
1
1
1
361
934567
19
use Catalyst ();
4
1
1
1
210
928
31
use FindBin;
5
1
1
1
3
1
96613
use Path::Class::File;
6
7# setup our Catalyst :-)
8
1
305903
my $c = Catalyst->new();
9
1
462
$c->setup_log();
10
1
1002
$c->setup_home("$FindBin::Bin");
11
12#
13# test start...
14#
15# can we use it?
16
1
709
use_ok 'Catalyst::Controller::Combine';
17
18# check for public methods
19
1
321
can_ok('Catalyst::Controller::Combine' => qw(do_combine default uri_for));
20
21# check for private methods
22
1
371
can_ok('Catalyst::Controller::Combine' => qw(_collect_files _check_dependencies));
23
24# instantiate
25
1
316
my $controller;
26
1
1
10
92
lives_ok { $controller = $c->setup_component('Catalyst::Controller::Combine') } 'setup component worked';
27
28
1
265
is(ref($controller), 'Catalyst::Controller::Combine', 'controller class looks good');
29
30# checking default attributes
31
1
448
is($controller->dir, 'static/combine', 'default directory looks good');
32
1
639
is($controller->extension, 'combine', 'default extension looks good');
33
1
435
is(ref($controller->depend), 'HASH', 'default dependency is HASH');
34
1
1
392
6
ok(scalar(keys(%{$controller->depend})) == 0, 'default dependency is empty');
35
1
225
is($controller->minifier, 'minify', 'default minify sub looks good');
36
37#
38# set some defaults and see if low level functions are working
39#
40
1
396
$controller->dir('static/js');
41
1
13
$controller->extension('js');
42
43# case 1: no file at all
44
1
1
15
78
lives_ok {$controller->_collect_files('Catalyst')} 'collect #1 works';
45
1
222
is_deeply($controller->{parts}, [], 'no parts');
46
1
457
is_deeply($controller->{files}, [], 'no files');
47
1
421
is_deeply($controller->{seen}, {}, 'nothing seen');
48
49# case 2: one file, no extension given
50
1
1
437
77
lives_ok {$controller->_collect_files('Catalyst', 'js1')} 'collect #2 works';
51
1
233
is_deeply($controller->{parts}, ['js1'], '1 part');
52
1
539
is_deeply($controller->{files}, ["" . Path::Class::File->new($FindBin::Bin, qw(root static js js1.js))], '1 file');
53
1
784
is_deeply($controller->{seen}, {js1 => 0}, '1 file seen once');
54
55# case 3: one file, extension given
56
1
1
534
77
lives_ok {$controller->_collect_files('Catalyst', 'js1.js')} 'collect #3 works';
57
1
219
is_deeply($controller->{parts}, ['js1'], '1 part');
58
1
526
is_deeply($controller->{files}, ["" . Path::Class::File->new($FindBin::Bin, qw(root static js js1.js))], '1 file');
59
1
777
is_deeply($controller->{seen}, {js1 => 0}, '1 file seen once');
60
61# case 4: one file, strange extension given
62
1
1
533
80
lives_ok {$controller->_collect_files('Catalyst', 'js1.xxx')} 'collect #4 works';
63
1
217
is_deeply($controller->{parts}, [], 'no parts');
64
1
423
is_deeply($controller->{files}, [], 'no files');
65
1
489
is_deeply($controller->{seen}, {}, 'nothing seen');
66
67# case 5: non existing file, no extension given
68
1
1
430
78
lives_ok {$controller->_collect_files('Catalyst', 'jsxx1')} 'collect #5 works';
69
1
217
is_deeply($controller->{parts}, [], 'no parts');
70
1
419
is_deeply($controller->{files}, [], 'no files');
71
1
415
is_deeply($controller->{seen}, {}, 'no files seen');
72
73# case 6: combination of existing and non existing files
74
1
1
422
78
lives_ok {$controller->_collect_files('Catalyst', 'js1.js', 'jsx.js', 'jsy', 'js2')} 'collect #6 works';
75
1
223
is_deeply($controller->{parts}, ['js1', 'js2'], '2 parts');
76
1
727
is_deeply($controller->{files},
77          ["" . Path::Class::File->new($FindBin::Bin, qw(root static js js1.js)),
78           "" . Path::Class::File->new($FindBin::Bin, qw(root static js js2.js))], '2 files');
79
1
1092
is_deeply($controller->{seen}, {js1 => 0, js2 => 0}, '2 file seen once');
80
81#
82# response generation
83#
84
1
1
623
80
lives_ok {$controller->do_combine($c, 'js1')} 'do_combine #1 works';
85
1
322
like($c->response->body, qr{/\* \s javascript \s 1 \s \*\/\s*}xms, 'response looks good');
86
87
1
210
done_testing;