Commit | Line | Data |
ec4d7259 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | use Class::MOP; |
5 | |
6 | BEGIN { |
10542b51 |
7 | my %hidden = map { (my $m = "$_.pm") =~ s{::}{/}g; $m => 1 } qw( |
8 | Foo |
9 | Bar |
10 | ); |
11 | unshift @INC, sub { |
12 | return unless exists $hidden{$_[1]}; |
13 | die "Can't locate $_[1] in \@INC (hidden)\n"; |
14 | }; |
15 | } |
16 | |
17 | BEGIN { |
ec4d7259 |
18 | package TestRole; |
2d4da72c |
19 | $INC{'TestRole'} = __FILE__; |
ec4d7259 |
20 | use Moose::Role; |
21 | |
22 | sub a { 'a' } |
23 | sub b { 'b' } |
7dac038c |
24 | |
25 | package Catalyst::TraitFor::Request::Foo; |
2d4da72c |
26 | $INC{'Catalyst/TraitFor/Request/Foo.pm'} = __FILE__; |
7dac038c |
27 | use Moose::Role; |
28 | |
29 | sub c { 'c' } |
30 | |
31 | package TestApp::TraitFor::Request::Bar; |
0f0fedb2 |
32 | $INC{'TestApp/TraitFor/Request/Bar.pm'} = __FILE__; |
7dac038c |
33 | use Moose::Role; |
34 | |
35 | sub d { 'd' } |
36 | |
37 | package Catalyst::TraitFor::Response::Foo; |
2d4da72c |
38 | $INC{'Catalyst/TraitFor/Response/Foo.pm'} = __FILE__; |
39 | |
7dac038c |
40 | use Moose::Role; |
41 | |
42 | sub c { 'c' } |
43 | |
10542b51 |
44 | package TestApp::TraitFor::Response::Bar; |
0f0fedb2 |
45 | $INC{'TestApp/TraitFor/Response/Bar.pm'} = __FILE__; |
2d4da72c |
46 | |
7dac038c |
47 | use Moose::Role; |
48 | |
49 | sub d { 'd' } |
ec4d7259 |
50 | } |
88e5a8b0 |
51 | |
53c7cc10 |
52 | BEGIN { |
53 | package TestApp::Controller::Root; |
54 | $INC{'TestApp/Controller/Root.pm'} = __FILE__; |
55 | |
56 | use Moose; |
57 | |
58 | BEGIN { extends 'Catalyst::Controller' }; |
59 | |
60 | sub root :Path('/') {} |
61 | } |
62 | |
ec4d7259 |
63 | { |
64 | package TestApp; |
2d4da72c |
65 | $INC{'TestApp.pm'} = __FILE__; |
88e5a8b0 |
66 | |
ec4d7259 |
67 | use Catalyst; |
68 | |
7dac038c |
69 | __PACKAGE__->request_class_traits([qw/TestRole Foo Bar/]); |
70 | __PACKAGE__->response_class_traits([qw/TestRole Foo Bar/]); |
ec4d7259 |
71 | __PACKAGE__->stats_class_traits([qw/TestRole/]); |
72 | |
73 | __PACKAGE__->setup; |
74 | } |
88e5a8b0 |
75 | |
76 | |
ec4d7259 |
77 | foreach my $class_prefix (qw/request response stats/) { |
78 | my $method = 'composed_' .$class_prefix. '_class'; |
79 | ok( |
80 | Class::MOP::class_of(TestApp->$method)->does_role('TestRole'), |
81 | "$method does TestRole", |
82 | ); |
83 | } |
84 | |
85 | use Catalyst::Test 'TestApp'; |
86 | |
87 | my ($res, $c) = ctx_request '/'; |
88 | |
89 | is $c->req->a, 'a'; |
90 | is $c->req->b, 'b'; |
7dac038c |
91 | is $c->req->c, 'c'; |
92 | is $c->req->d, 'd'; |
ec4d7259 |
93 | is $c->res->a, 'a'; |
94 | is $c->res->b, 'b'; |
7dac038c |
95 | is $c->res->c, 'c'; |
96 | is $c->res->d, 'd'; |
ec4d7259 |
97 | |
98 | done_testing; |