| File: | t/1-inherit.t |
| Coverage: | 100.0% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | 1 1 1 | 1272034650710471 12902 9 | use Test::More; | ||||
| 2 | 1 1 1 | 460 2092 5 | use Test::Exception; | ||||
| 3 | 1 1 1 | 349 932317 17 | use Catalyst (); | ||||
| 4 | 1 1 1 | 175 2 16 | use Catalyst::Controller::Combine (); | ||||
| 5 | 1 1 1 | 196 939 31 | use FindBin; | ||||
| 6 | 1 1 1 | 3 1 27 | use Path::Class::File; | ||||
| 7 | |||||||
| 8 | # a simple package | ||||||
| 9 | { | ||||||
| 10 | 1 | 408125 | package MyApp::Controller::Js; | ||||
| 11 | 1 1 1 | 2 2 7 | use Moose; | ||||
| 12 | 1 | 10 | extends 'Catalyst::Controller::Combine'; | ||||
| 13 | |||||||
| 14 | 1 | 3465 | __PACKAGE__->config( | ||||
| 15 | # dir => 'static/js', # redundant, defaults to static/<<action_namespace>> | ||||||
| 16 | # extension => 'js', # redundant, defaults to <<action_namespace>> | ||||||
| 17 | depend => { | ||||||
| 18 | js2 => 'js1', | ||||||
| 19 | }, | ||||||
| 20 | # will be guessed from extension | ||||||
| 21 | # mimetype => 'application/javascript', | ||||||
| 22 | ); | ||||||
| 23 | } | ||||||
| 24 | |||||||
| 25 | # setup our Catalyst :-) | ||||||
| 26 | 1 | 184 | my $c = Catalyst->new(); | ||||
| 27 | 1 | 388 | $c->setup_log(); | ||||
| 28 | 1 | 918 | $c->setup_home("$FindBin::Bin"); | ||||
| 29 | |||||||
| 30 | 1 | 693 | my $controller; | ||||
| 31 | 1 1 | 11 105 | lives_ok { $controller = $c->setup_component('MyApp::Controller::Js') } 'setup component worked'; | ||||
| 32 | |||||||
| 33 | 1 | 340 | is(ref($controller), 'MyApp::Controller::Js', 'controller class looks good'); | ||||
| 34 | 1 | 487 | ok($controller->isa('Catalyst::Controller::Combine'), 'is a Catalyst::Controller::Combine'); | ||||
| 35 | |||||||
| 36 | # checking default attributes | ||||||
| 37 | 1 | 217 | is($controller->dir, 'static/js', 'default directory looks good'); | ||||
| 38 | 1 | 652 | is($controller->extension, 'js', 'default extension looks good'); | ||||
| 39 | 1 | 428 | is(ref($controller->depend), 'HASH', 'default dependency is HASH'); | ||||
| 40 | 1 | 398 | is_deeply($controller->depend, {js2 => 'js1'}, 'default dependency looks good'); | ||||
| 41 | 1 | 579 | is($controller->minifier, 'minify', 'default minify sub looks good'); | ||||
| 42 | |||||||
| 43 | # case 1: one file, no extension given | ||||||
| 44 | 1 1 | 405 91 | lives_ok {$controller->_collect_files($c, 'js1')} 'collect #1 works'; | ||||
| 45 | 1 | 220 | is_deeply($controller->{parts}, ['js1'], '1 part'); | ||||
| 46 | 1 | 530 | is_deeply($controller->{files}, ["" . Path::Class::File->new($FindBin::Bin, qw(root static js js1.js))], '1 file'); | ||||
| 47 | 1 | 794 | is_deeply($controller->{seen}, {js1 => 0}, '1 file seen once'); | ||||
| 48 | |||||||
| 49 | # case 2: one file, no extension given -- dependency should add one | ||||||
| 50 | 1 1 | 530 78 | lives_ok {$controller->_collect_files($c, 'js2')} 'collect #2 works'; | ||||
| 51 | 1 | 220 | is_deeply($controller->{parts}, ['js1','js2'], '2 parts'); | ||||
| 52 | 1 | 629 | is_deeply($controller->{files}, | ||||
| 53 | ["" . Path::Class::File->new($FindBin::Bin, qw(root static js js1.js)), | ||||||
| 54 | "" . Path::Class::File->new($FindBin::Bin, qw(root static js js2.js))], '2 files'); | ||||||
| 55 | # "$FindBin::Bin/root/static/js/js1.js","$FindBin::Bin/root/static/js/js2.js"], '2 files'); | ||||||
| 56 | 1 | 1097 | is_deeply($controller->{seen}, {js1 => 1, js2 => 0}, '2 files seen once'); | ||||
| 57 | |||||||
| 58 | # case 3: two files, no extension given | ||||||
| 59 | 1 1 | 624 77 | lives_ok {$controller->_collect_files($c, 'js1','js2')} 'collect #3 works'; | ||||
| 60 | 1 | 219 | is_deeply($controller->{parts}, ['js1','js2'], '2 parts'); | ||||
| 61 | 1 | 651 | is_deeply($controller->{files}, | ||||
| 62 | ["" . Path::Class::File->new($FindBin::Bin, qw(root static js js1.js)), | ||||||
| 63 | "" . Path::Class::File->new($FindBin::Bin, qw(root static js js2.js))], '2 files'); | ||||||
| 64 | 1 | 1099 | is_deeply($controller->{seen}, {js1 => 1, js2 => 0}, '2 files seen once'); | ||||
| 65 | |||||||
| 66 | 1 | 688 | done_testing; | ||||