Commit | Line | Data |
ec4d7259 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | use Class::MOP; |
5 | |
6 | BEGIN { |
7 | package TestRole; |
8 | use Moose::Role; |
9 | |
10 | sub a { 'a' } |
11 | sub b { 'b' } |
7dac038c |
12 | |
13 | package Catalyst::TraitFor::Request::Foo; |
14 | use Moose::Role; |
15 | |
16 | sub c { 'c' } |
17 | |
18 | package TestApp::TraitFor::Request::Bar; |
19 | use Moose::Role; |
20 | |
21 | sub d { 'd' } |
22 | |
23 | package Catalyst::TraitFor::Response::Foo; |
24 | use Moose::Role; |
25 | |
26 | sub c { 'c' } |
27 | |
28 | package TestApp::TraitFor::Response::Bar; |
29 | use Moose::Role; |
30 | |
31 | sub d { 'd' } |
ec4d7259 |
32 | } |
33 | |
34 | { |
35 | package TestApp; |
36 | |
37 | use Catalyst; |
38 | |
7dac038c |
39 | __PACKAGE__->request_class_traits([qw/TestRole Foo Bar/]); |
40 | __PACKAGE__->response_class_traits([qw/TestRole Foo Bar/]); |
ec4d7259 |
41 | __PACKAGE__->stats_class_traits([qw/TestRole/]); |
42 | |
43 | __PACKAGE__->setup; |
44 | } |
45 | |
46 | |
47 | foreach my $class_prefix (qw/request response stats/) { |
48 | my $method = 'composed_' .$class_prefix. '_class'; |
49 | ok( |
50 | Class::MOP::class_of(TestApp->$method)->does_role('TestRole'), |
51 | "$method does TestRole", |
52 | ); |
53 | } |
54 | |
55 | use Catalyst::Test 'TestApp'; |
56 | |
57 | my ($res, $c) = ctx_request '/'; |
58 | |
59 | is $c->req->a, 'a'; |
60 | is $c->req->b, 'b'; |
7dac038c |
61 | is $c->req->c, 'c'; |
62 | is $c->req->d, 'd'; |
ec4d7259 |
63 | is $c->res->a, 'a'; |
64 | is $c->res->b, 'b'; |
7dac038c |
65 | is $c->res->c, 'c'; |
66 | is $c->res->d, 'd'; |
ec4d7259 |
67 | |
68 | done_testing; |