remove a confusing and duplicate bit of documentation
[catagits/Catalyst-Runtime.git] / t / live_component_controller_action_go.t
1 #!perl
2
3 use strict;
4 use warnings;
5
6 use FindBin;
7 use lib "$FindBin::Bin/lib";
8
9 our $iters;
10
11 BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
12
13 use Test::More tests => 47 * $iters;
14 use Catalyst::Test 'TestApp';
15
16 if ( $ENV{CAT_BENCHMARK} ) {
17     require Benchmark;
18     Benchmark::timethis( $iters, \&run_tests );
19 }
20 else {
21     for ( 1 .. $iters ) {
22         run_tests();
23     }
24 }
25
26 sub run_tests {
27     {
28         my @expected = qw[
29           TestApp::Controller::Action::Go->one
30           TestApp::Controller::Action::Go->two
31           TestApp::Controller::Action::Go->three
32           TestApp::Controller::Action::Go->four
33           TestApp::Controller::Action::Go->five
34           TestApp::View::Dump::Request->process
35           TestApp->end
36         ];
37
38         @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
39         my $expected = join( ", ", @expected );
40
41         # Test go to global private action
42         ok( my $response = request('http://localhost/action/go/global'),
43             'Request' );
44         ok( $response->is_success, 'Response Successful 2xx' );
45         is( $response->content_type, 'text/plain', 'Response Content-Type' );
46         is( $response->header('X-Catalyst-Action'),
47             'action/go/global', 'Main Class Action' );
48
49         # Test go to chain of actions.
50         ok( $response = request('http://localhost/action/go/one'),
51             'Request' );
52         ok( $response->is_success, 'Response Successful 2xx' );
53         is( $response->content_type, 'text/plain', 'Response Content-Type' );
54         is( $response->header('X-Catalyst-Action'),
55             'action/go/one', 'Test Action' );
56         is(
57             $response->header('X-Test-Class'),
58             'TestApp::Controller::Action::Go',
59             'Test Class'
60         );
61         is( $response->header('X-Catalyst-Executed'),
62             $expected, 'Executed actions' );
63         like(
64             $response->content,
65             qr/^bless\( .* 'Catalyst::Request' \)$/s,
66             'Content is a serialized Catalyst::Request'
67         );
68     }
69
70     {
71         my @expected = qw[
72           TestApp::Controller::Action::Go->go_die
73           TestApp::Controller::Action::Go->args
74           TestApp->end
75         ];
76
77         @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
78         my $expected = join( ", ", @expected );
79
80         ok( my $response = request('http://localhost/action/go/go_die'),
81             'Request' );
82         ok( $response->is_success, 'Response Successful 2xx' );
83         is( $response->content_type, 'text/plain', 'Response Content-Type' );
84         is( $response->header('X-Catalyst-Action'),
85             'action/go/go_die', 'Test Action'
86         );
87         is(
88             $response->header('X-Test-Class'),
89             'TestApp::Controller::Action::Go',
90             'Test Class'
91         );
92         is( $response->header('X-Catalyst-Executed'),
93             $expected, 'Executed actions' );
94         is( $response->content, $Catalyst::GO, "Go died as expected" );
95     }
96
97     {
98         ok(
99             my $response =
100               request('http://localhost/action/go/with_args/old'),
101             'Request with args'
102         );
103         ok( $response->is_success, 'Response Successful 2xx' );
104         is( $response->content, 'old' );
105     }
106
107     {
108         ok(
109             my $response = request(
110                 'http://localhost/action/go/with_method_and_args/new'),
111             'Request with args and method'
112         );
113         ok( $response->is_success, 'Response Successful 2xx' );
114         is( $response->content, 'new' );
115     }
116
117     # test go with embedded args
118     {
119         ok(
120             my $response =
121               request('http://localhost/action/go/args_embed_relative'),
122             'Request'
123         );
124         ok( $response->is_success, 'Response Successful 2xx' );
125         is( $response->content, 'ok' );
126     }
127
128     {
129         ok(
130             my $response =
131               request('http://localhost/action/go/args_embed_absolute'),
132             'Request'
133         );
134         ok( $response->is_success, 'Response Successful 2xx' );
135         is( $response->content, 'ok' );
136     }
137     {
138         my @expected = qw[
139           TestApp::Controller::Action::TestRelative->relative_go
140           TestApp::Controller::Action::Go->one
141           TestApp::Controller::Action::Go->two
142           TestApp::Controller::Action::Go->three
143           TestApp::Controller::Action::Go->four
144           TestApp::Controller::Action::Go->five
145           TestApp::View::Dump::Request->process
146           TestApp->end
147         ];
148
149         @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
150         my $expected = join( ", ", @expected );
151
152         # Test go to chain of actions.
153         ok( my $response = request('http://localhost/action/relative/relative_go'),
154             'Request' );
155         ok( $response->is_success, 'Response Successful 2xx' );
156         is( $response->content_type, 'text/plain', 'Response Content-Type' );
157         is( $response->header('X-Catalyst-Action'),
158             'action/relative/relative_go', 'Test Action' );
159         is(
160             $response->header('X-Test-Class'),
161             'TestApp::Controller::Action::Go',
162             'Test Class'
163         );
164         is( $response->header('X-Catalyst-Executed'),
165             $expected, 'Executed actions' );
166         like(
167             $response->content,
168             qr/^bless\( .* 'Catalyst::Request' \)$/s,
169             'Content is a serialized Catalyst::Request'
170         );
171     }
172     {
173         my @expected = qw[
174           TestApp::Controller::Action::TestRelative->relative_go_two
175           TestApp::Controller::Action::Go->one
176           TestApp::Controller::Action::Go->two
177           TestApp::Controller::Action::Go->three
178           TestApp::Controller::Action::Go->four
179           TestApp::Controller::Action::Go->five
180           TestApp::View::Dump::Request->process
181           TestApp->end
182         ];
183
184         @expected = map { /Action/ ? (_begin($_), $_) : ($_) } @expected;
185         my $expected = join( ", ", @expected );
186
187         # Test go to chain of actions.
188         ok(
189             my $response =
190               request('http://localhost/action/relative/relative_go_two'),
191             'Request'
192         );
193         ok( $response->is_success, 'Response Successful 2xx' );
194         is( $response->content_type, 'text/plain', 'Response Content-Type' );
195         is(
196             $response->header('X-Catalyst-Action'),
197             'action/relative/relative_go_two',
198             'Test Action'
199         );
200         is(
201             $response->header('X-Test-Class'),
202             'TestApp::Controller::Action::Go',
203             'Test Class'
204         );
205         is( $response->header('X-Catalyst-Executed'),
206             $expected, 'Executed actions' );
207         like(
208             $response->content,
209             qr/^bless\( .* 'Catalyst::Request' \)$/s,
210             'Content is a serialized Catalyst::Request'
211         );
212     }
213
214     # test class go 
215     {
216         ok(
217             my $response = request(
218                 'http://localhost/action/go/class_go_test_action'),
219             'Request'
220         );
221         ok( $response->is_success, 'Response Successful 2xx' );
222         is( $response->header('X-Class-Go-Test-Method'), 1,
223             'Test Method' );
224     }
225
226 }
227
228 sub _begin {
229     local $_ = shift;
230     s/->(.*)$/->begin/;
231     return $_;
232 }
233