update distar url
[catagits/Catalyst-Runtime.git] / t / class_traits.t
CommitLineData
ec4d7259 1use strict;
2use warnings;
3use Test::More;
4use Class::MOP;
5
6BEGIN {
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
17BEGIN {
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 52BEGIN {
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 77foreach 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
85use Catalyst::Test 'TestApp';
86
87my ($res, $c) = ctx_request '/';
88
89is $c->req->a, 'a';
90is $c->req->b, 'b';
7dac038c 91is $c->req->c, 'c';
92is $c->req->d, 'd';
ec4d7259 93is $c->res->a, 'a';
94is $c->res->b, 'b';
7dac038c 95is $c->res->c, 'c';
96is $c->res->d, 'd';
ec4d7259 97
98done_testing;