When inserting Cat::Req::REST, always add trait, rather than sometimes using the...
Dave Rolsky [Sun, 17 Jan 2010 22:16:06 +0000 (16:16 -0600)]
lib/Catalyst/Request/REST.pm
t/catalyst-traitfor-request-rest.t

index 275be01..0228eda 100644 (file)
@@ -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;
index 99f4ffb..6466158 100644 (file)
@@ -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;