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; |