return if $req_class->isa($class);
my $req_class_meta = Moose->init_meta( for_class => $req_class );
return if $req_class_meta->does_role('Catalyst::TraitFor::Request::REST');
- my $meta = Moose::Meta::Class->create_anon_class(
- superclasses => [$req_class],
- roles => ['Catalyst::TraitFor::Request::REST'],
- cache => 1
- );
- $meta->add_method(meta => sub { $meta });
- $app->request_class($meta->name);
+ if ($req_class eq 'Catalyst::Request') {
+ $app->request_class($class);
+ }
+ else {
+ my $meta = Moose::Meta::Class->create_anon_class(
+ superclasses => [$req_class],
+ roles => ['Catalyst::TraitFor::Request::REST'],
+ cache => 1
+ );
+ $meta->add_method(meta => sub { $meta });
+ $app->request_class($meta->name);
+ }
}
__PACKAGE__->meta->make_immutable;
$ENV{CATALYST_DEBUG} = 0;
my $test = 'Test::Catalyst::Action::REST';
use_ok $test;
- ok($test->request_class->meta->does_role('Catalyst::TraitFor::Request::REST'),
- 'request class does REST role');
+ is($test->request_class, 'Catalyst::Request::REST',
+ 'Request::REST took over for Request');
my $meta = Moose::Meta::Class->create_anon_class(
superclasses => ['Catalyst::Request'],
ok !$@, 'Can setup again';
isnt $test->request_class, $meta->name, 'Different request class';
ok $test->request_class->can('__random_method'), 'Is right class';
- ok($test->request_class->meta->does_role('Catalyst::TraitFor::Request::REST'),
- 'request class still does REST role');
+ ok $test->request_class->can('data'), 'Also smells like REST subclass';
{
package My::Request;