| File: | t/2-uri.t |
| Coverage: | 100.0% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | 1 1 1 | 1272034652833989 12841 9 | use Test::More; | ||||
| 2 | 1 1 1 | 433 944 38 | use FindBin; | ||||
| 3 | 1 1 1 | 164 673 8 | use lib "$FindBin::Bin/lib"; | ||||
| 4 | |||||||
| 5 | 1 1 1 | 288 491852 7 | use Catalyst::Test 'TestApp'; | ||||
| 6 | |||||||
| 7 | # | ||||||
| 8 | # sanity check first -- controller | ||||||
| 9 | # | ||||||
| 10 | 1 | 472627 | my $controller = TestApp->controller('Js'); | ||||
| 11 | 1 | 106 | is( ref($controller), 'TestApp::Controller::Js', 'Controller is OK'); | ||||
| 12 | |||||||
| 13 | # | ||||||
| 14 | # get a context object | ||||||
| 15 | # | ||||||
| 16 | 1 | 573 | my ($res, $c) = ctx_request('/call_uri'); | ||||
| 17 | 1 | 6516 | is( ref($c), 'TestApp', 'context is OK' ); | ||||
| 18 | |||||||
| 19 | # | ||||||
| 20 | # test the 'uri_for' function | ||||||
| 21 | # | ||||||
| 22 | 1 | 545 | like( $c->uri_for($controller->action_for('default'), 'js1.js'), | ||||
| 23 | qr{\A http://\w+/js/js1\.js \? m=\d+ \z}xms, | ||||||
| 24 | 'uri #1 looks good'); | ||||||
| 25 | 1 | 249 | like( $c->uri_for($controller->action_for('default'), 'js1'), | ||||
| 26 | qr{\A http://\w+/js/js1\.js \? m=\d+ \z}xms, | ||||||
| 27 | 'uri #2 looks good'); | ||||||
| 28 | 1 | 230 | like( $c->uri_for($controller->action_for('default'), 'js2.js'), | ||||
| 29 | qr{\A http://\w+/js/js2\.js \? m=\d+ \z}xms, | ||||||
| 30 | 'uri #3 looks good'); | ||||||
| 31 | 1 | 253 | like( $c->uri_for($controller->action_for('default'), 'js1', 'js2.js'), | ||||
| 32 | qr{\A http://\w+/js/js2\.js \? m=\d+ \z}xms, | ||||||
| 33 | 'uri #4 looks good'); | ||||||
| 34 | 1 | 230 | like( $c->uri_for($controller->action_for('default'), 'js2', 'js1.js'), | ||||
| 35 | qr{\A http://\w+/js/js2\.js \? m=\d+ \z}xms, | ||||||
| 36 | 'uri #5 looks good'); | ||||||
| 37 | 1 | 230 | like( $c->uri_for($controller->action_for('default'), 'js2.js', 'js1.js'), | ||||
| 38 | qr{\A http://\w+/js/js2\.js \? m=\d+ \z}xms, | ||||||
| 39 | 'uri #6 looks good'); | ||||||
| 40 | |||||||
| 41 | # | ||||||
| 42 | # test getting javascript contents | ||||||
| 43 | # | ||||||
| 44 | |||||||
| 45 | # single file - w/ ext | ||||||
| 46 | 1 | 237 | like( get('/js/js1.js'), | ||||
| 47 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* \z}xms, | ||||||
| 48 | 'JavaScript #1 looks OK' ); | ||||||
| 49 | |||||||
| 50 | # single file - w/o ext | ||||||
| 51 | 1 | 271 | like( get('/js/js1'), | ||||
| 52 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* \z}xms, | ||||||
| 53 | 'JavaScript #2 looks OK' ); | ||||||
| 54 | |||||||
| 55 | # not existing + single file - w/o ext | ||||||
| 56 | 1 | 248 | like( get('/js/xyz/js1'), | ||||
| 57 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* \z}xms, | ||||||
| 58 | 'JavaScript #3 looks OK' ); | ||||||
| 59 | |||||||
| 60 | # multiple files, last w/ ext | ||||||
| 61 | 1 | 241 | like( get('/js/js1/js2.js'), | ||||
| 62 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* /\* \s+ javascript \s+ 2 \s+ \*/ \s+ \z}xms, | ||||||
| 63 | 'JavaScript #4 looks OK' ); | ||||||
| 64 | |||||||
| 65 | # multiple files, first w/ ext | ||||||
| 66 | 1 | 284 | like( get('/js/js1.js/js2'), | ||||
| 67 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* /\* \s+ javascript \s+ 2 \s+ \*/ \s+ \z}xms, | ||||||
| 68 | 'JavaScript #5 looks OK' ); | ||||||
| 69 | |||||||
| 70 | # multiple files, all w/ ext | ||||||
| 71 | 1 | 251 | like( get('/js/js1.js/js2.js'), | ||||
| 72 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* /\* \s+ javascript \s+ 2 \s+ \*/ \s+ \z}xms, | ||||||
| 73 | 'JavaScript #6 looks OK' ); | ||||||
| 74 | |||||||
| 75 | # one file that depends on another, w/ extension | ||||||
| 76 | 1 | 242 | like( get('/js/js2.js'), | ||||
| 77 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* /\* \s+ javascript \s+ 2 \s+ \*/ \s+ \z}xms, | ||||||
| 78 | 'JavaScript #7 looks OK' ); | ||||||
| 79 | |||||||
| 80 | # one file that depends on another, w/o extension | ||||||
| 81 | 1 | 275 | like( get('/js/js2'), | ||||
| 82 | qr{\A /\* \s+ javascript \s+ 1 \s+ \*/ \s* /\* \s+ javascript \s+ 2 \s+ \*/ \s+ \z}xms, | ||||||
| 83 | 'JavaScript #8 looks OK' ); | ||||||
| 84 | |||||||
| 85 | # | ||||||
| 86 | # fake in a 'minify' routine that removes spaces | ||||||
| 87 | # | ||||||
| 88 | *{TestApp::Controller::Js::minify} = sub { | ||||||
| 89 | 1 | 8 | my $text = shift; | ||||
| 90 | 1 | 4 | $text =~ s{\s+}{}xmsg; | ||||
| 91 | 1 | 7 | return $text; | ||||
| 92 | 1 | 247 | }; | ||||
| 93 | |||||||
| 94 | # | ||||||
| 95 | # test minification -- CAUTION: a newline may get added at the end... | ||||||
| 96 | # | ||||||
| 97 | 1 | 19 | like( get('/js/js1.js'), | ||||
| 98 | qr{\A /\* javascript1 \*/ \s* \z}xms, | ||||||
| 99 | 'minified JavaScript looks OK' ); | ||||||
| 100 | |||||||
| 101 | # suppress warning | ||||||
| 102 | 1 | 242 | my $dummy = *{TestApp::Controller::Js::minify}; | ||||
| 103 | |||||||
| 104 | 1 | 17 | done_testing; | ||||