update changelog in prep for release
[catagits/CatalystX-Declare.git] / t / lib / TestApp / Controller / ActionParams.pm
1 use CatalystX::Declare;
2 namespace TestApp;
3
4 role hasActionParams {
5     has [qw/p1 p2/] => (is=>'ro', lazy_build=>1);
6
7     method _build_p1 {
8         join ',', @{$self->attributes->{p1}};
9     }
10     method _build_p2 {
11         join ',', @{$self->attributes->{p2}};
12     }
13 }
14
15 role hasActionParamsDeep {
16     has 'p_deep' => (is=>'ro', lazy_build=>1);
17     method _build_p_deep {
18         join ',', @{$self->attributes->{p_deep}};
19     }
20 }
21
22 controller ::Controller::ActionParams {
23
24     action base
25     under '/base'
26     as 'actionparams';
27
28     action first under base
29     with hasActionParams(p1=>100,p2=>101)
30     is final {
31         my $p1 = $ctx->controller->action_for('first')->p1;
32         my $p2 = $ctx->controller->action_for('first')->p2;
33         $ctx->response->body("action_args_first: $p1,$p2");
34     }
35
36     action second under base
37     with hasActionParams({p1=>200,p2=>201})
38     is final {
39         my $p1 = $ctx->controller->action_for('second')->p1;
40         my $p2 = $ctx->controller->action_for('second')->p2;
41         $ctx->response->body("action_args_second: $p1,$p2");
42     }
43
44     action third under base
45     with hasActionParams(
46         p1=>300,
47         p2=>301,
48     ) is final {
49         my $p1 = $ctx->controller->action_for('third')->p1;
50         my $p2 = $ctx->controller->action_for('third')->p2;
51         $ctx->response->body("action_args_third: $p1,$p2");
52     }
53
54     action forth under base
55     with (
56         hasActionParams(p1=>400,p2=>401), 
57         hasActionParams(p1=>1,p2=>2, p0=>3)
58     ) is final {
59         my $action = $ctx->controller->action_for('forth');
60         my $p1 = $action->p1;
61         my $p2 = $action->p2;
62         $ctx->response->body("action_args_forth: $p1,$p2");
63     }
64
65     action first_app_ns under base
66     with hasActionParams_AppNS(p1=>100,p2=>101)
67     is final {
68         my $p1 = $ctx->controller->action_for('first')->p1;
69         my $p2 = $ctx->controller->action_for('first')->p2;
70         $ctx->response->body("action_args_first: $p1,$p2");
71     }
72
73     action first_cat_ns under base
74     with hasActionParams_CatNS(p1=>100,p2=>101)
75     is final {
76         my $p1 = $ctx->controller->action_for('first')->p1;
77         my $p2 = $ctx->controller->action_for('first')->p2;
78         $ctx->response->body("action_args_first: $p1,$p2");
79     }
80
81     action check_deep under base
82     with hasActionParamsDeep(p_deep=>{a=>1,b=>2}) is final {
83         my $action = $ctx->controller->action_for('check_deep');
84         my $p_deep = $action->p_deep;
85         ## $ctx->log->_dump($action->attributes);
86         $ctx->response->body("action_args_deep: $p_deep");
87     }
88
89
90 }
91