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