proposal for fragment spec
[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;
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
47foreach 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
55use Catalyst::Test 'TestApp';
56
57my ($res, $c) = ctx_request '/';
58
59is $c->req->a, 'a';
60is $c->req->b, 'b';
7dac038c 61is $c->req->c, 'c';
62is $c->req->d, 'd';
ec4d7259 63is $c->res->a, 'a';
64is $c->res->b, 'b';
7dac038c 65is $c->res->c, 'c';
66is $c->res->d, 'd';
ec4d7259 67
68done_testing;