test case for reported regression
[catagits/Catalyst-Runtime.git] / t / class_traits.t
1 use strict;
2 use warnings;
3 use Test::More;
4 use Class::MOP;
5
6 BEGIN {
7   package TestRole;
8   $INC{'TestRole'} = __FILE__;
9   use Moose::Role;
10
11   sub a { 'a' }
12   sub b { 'b' }
13
14   package Catalyst::TraitFor::Request::Foo;
15   $INC{'Catalyst/TraitFor/Request/Foo.pm'} = __FILE__;
16   use Moose::Role;
17
18   sub c { 'c' }
19
20   package TestApp::TraitFor::Request::Bar;
21   $INC{'TestApp/TraitFor/Request/Bar.pm'} = __FILE__;
22   use Moose::Role;
23
24   sub d { 'd' }
25
26   package Catalyst::TraitFor::Response::Foo;
27   $INC{'Catalyst/TraitFor/Response/Foo.pm'} = __FILE__;
28
29   use Moose::Role;
30
31   sub c { 'c' }
32
33   package TestApp::TraitFor::Response::Bar; 
34   $INC{'TestApp/TraitFor/Response/Bar.pm'} = __FILE__;
35
36   use Moose::Role;
37
38   sub d { 'd' }
39 }
40  
41 {
42   package TestApp;
43   $INC{'TestApp.pm'} = __FILE__;
44  
45   use Catalyst;
46
47   __PACKAGE__->request_class_traits([qw/TestRole Foo Bar/]);
48   __PACKAGE__->response_class_traits([qw/TestRole Foo Bar/]);
49   __PACKAGE__->stats_class_traits([qw/TestRole/]);
50
51   __PACKAGE__->setup;
52 }
53  
54  
55 foreach 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
63 use Catalyst::Test 'TestApp';
64
65 my ($res, $c) = ctx_request '/';
66
67 is $c->req->a, 'a';
68 is $c->req->b, 'b';
69 is $c->req->c, 'c';
70 is $c->req->d, 'd';
71 is $c->res->a, 'a';
72 is $c->res->b, 'b';
73 is $c->res->c, 'c';
74 is $c->res->d, 'd';
75
76 done_testing;