File Coverage

File:t/2-uri.t
Coverage:100.0%

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