File Coverage: t/0-basic.t

# File Coverage

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

line | stmt | bran | cond | sub | pod | time | code
--- | --- | --- | --- | --- | --- | --- | ---
1 | 1 1 1 |  |  | 1 |  | 1272034648562804 13468 10 | use Test::More;
2 | 1 1 1 |  |  | 1 |  | 481 2137 6 | use Test::Exception;
3 | 1 1 1 |  |  | 1 |  | 361 934567 19 | use Catalyst ();
4 | 1 1 1 |  |  | 1 |  | 210 928 31 | use FindBin;
5 | 1 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 |  |  | 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 |  |  | 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 |  |  | 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 |  |  | 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 |  |  | 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 |  |  | 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 |  |  | 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 |  |  | 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;