rewrite tests using Test::WWW::Mechanize::Catalyst to use Catalyst::Test
[catagits/Catalyst-Runtime.git] / t / class_traits_CAR_bug.t
1 use strict;
2 use warnings;
3 use Test::More;
4 use Class::MOP;
5
6 BEGIN {
7   use Test::More;
8   eval "use Catalyst::Action::REST; 1" || do {
9     plan skip_all => "Trouble loading Catalyst::Action::REST => $@";
10   };
11 }
12
13 BEGIN {
14   my %hidden = map { (my $m = "$_.pm") =~ s{::}{/}g; $m => 1 } qw(
15     Foo
16     Bar
17   );
18   unshift @INC, sub {
19     return unless exists $hidden{$_[1]};
20     die "Can't locate $_[1] in \@INC (hidden)\n";
21   };
22 }
23
24 BEGIN {
25   package TestRole;
26   $INC{'TestRole'} = __FILE__;
27   use Moose::Role;
28
29   sub a { 'a' }
30   sub b { 'b' }
31
32   package Catalyst::TraitFor::Request::Foo;
33   $INC{'Catalyst/TraitFor/Request/Foo.pm'} = __FILE__;
34   use Moose::Role;
35
36   sub c { 'c' }
37
38   package TestApp::TraitFor::Request::Bar;
39   $INC{'TestApp/TraitFor/Request/Bar.pm'} = __FILE__;
40   use Moose::Role;
41
42   sub d { 'd' }
43
44   package TestApp::Controller::Root;
45   $INC{'TestApp/Controller/Root.pm'} = __FILE__;
46
47   use Moose;
48   use MooseX::MethodAttributes;
49
50
51 }
52
53 BEGIN {
54   package TestApp::Controller::Root;
55   $INC{'TestApp/Controller/Root.pm'} = __FILE__;
56
57   use Moose;
58
59   BEGIN { extends 'Catalyst::Controller' };
60
61   sub root :Path('/') {}
62 }
63
64 {
65   package TestApp;
66   $INC{'TestApp.pm'} = __FILE__;
67
68   use Catalyst;
69
70   __PACKAGE__->request_class_traits([qw/TestRole Foo Bar/]);
71   __PACKAGE__->setup;
72 }
73
74
75 foreach my $class_prefix (qw/request/) {
76   my $method = 'composed_' .$class_prefix. '_class';
77   ok(
78     Class::MOP::class_of(TestApp->$method)->does_role('TestRole'),
79     "$method does TestRole",
80   );
81 }
82
83 use Catalyst::Test 'TestApp';
84
85 my ($res, $c) = ctx_request '/';
86
87 is $c->req->a, 'a';
88 is $c->req->b, 'b';
89 is $c->req->c, 'c';
90 is $c->req->d, 'd';
91
92 done_testing;