From: Dave Rolsky Date: Sun, 17 Jan 2010 22:16:06 +0000 (-0600) Subject: When inserting Cat::Req::REST, always add trait, rather than sometimes using the... X-Git-Tag: 1.08~155 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Action-Serialize-Data-Serializer.git;a=commitdiff_plain;h=15f4af0ef06d11960e6cb9a4bbebf2ec1ac19a54 When inserting Cat::Req::REST, always add trait, rather than sometimes using the Cat::Req::REST class directly. --- diff --git a/lib/Catalyst/Request/REST.pm b/lib/Catalyst/Request/REST.pm index 275be01..0228eda 100644 --- a/lib/Catalyst/Request/REST.pm +++ b/lib/Catalyst/Request/REST.pm @@ -21,18 +21,13 @@ sub _insert_self_into { 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'); - 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); - } + 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; diff --git a/t/catalyst-traitfor-request-rest.t b/t/catalyst-traitfor-request-rest.t index 99f4ffb..6466158 100644 --- a/t/catalyst-traitfor-request-rest.t +++ b/t/catalyst-traitfor-request-rest.t @@ -182,8 +182,8 @@ for my $class ( $anon_class, 'Catalyst::Request::REST' ) { $ENV{CATALYST_DEBUG} = 0; my $test = 'Test::Catalyst::Action::REST'; use_ok $test; - is($test->request_class, 'Catalyst::Request::REST', - 'Request::REST took over for Request'); + ok($test->request_class->meta->does_role('Catalyst::TraitFor::Request::REST'), + 'request class does REST role'); my $meta = Moose::Meta::Class->create_anon_class( superclasses => ['Catalyst::Request'], @@ -196,7 +196,8 @@ for my $class ( $anon_class, 'Catalyst::Request::REST' ) { 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->can('data'), 'Also smells like REST subclass'; + ok($test->request_class->meta->does_role('Catalyst::TraitFor::Request::REST'), + 'request class still does REST role'); { package My::Request;