Merge branch 'master' of github.com:bobtfish/catalyst-action-rest
[catagits/Catalyst-Action-REST.git] / t / catalyst-request-rest.t
index 4493897..ebb7b7d 100644 (file)
@@ -1,8 +1,8 @@
 use strict;
 use warnings;
-use Test::More tests => 24;
+use Test::More;
 use FindBin;
-use lib ( "$FindBin::Bin/../lib" );
+use lib ( "$FindBin::Bin/../lib", "$FindBin::Bin/../t/lib" );
 
 use Catalyst::Request::REST;
 use HTTP::Headers;
@@ -87,7 +87,7 @@ use HTTP::Headers;
     $request->headers( HTTP::Headers->new );
     $request->parameters( {} );
     $request->method('GET');
-    $request->content_type('text/x-json');
+    $request->content_type('application/json');
     $request->headers->header(
         'Accept' =>
         # From Firefox 2.0 when it requests an html page
@@ -95,7 +95,7 @@ use HTTP::Headers;
     );
 
     is_deeply( $request->accepted_content_types,
-               [ qw( text/x-json
+               [ qw( application/json
                      text/xml application/xml application/xhtml+xml
                      image/png
                      text/html
@@ -167,6 +167,38 @@ use HTTP::Headers;
                'each type appears only once' );
 }
 
+{
+  local %ENV=%ENV;
+  $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');
+
+  my $meta = Moose::Meta::Class->create_anon_class(
+      superclasses => ['Catalyst::Request'],
+  );
+  $meta->add_method('__random_method' => sub { 42 });
+
+  $test->request_class($meta->name);
+  # FIXME - setup_finished(0) is evil!
+  eval { $test->setup_finished(0); $test->setup };
+  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';
+
+  {
+    package My::Request;
+    use base 'Catalyst::Request::REST';
+  }
+  $test->request_class('My::Request');
+  eval { $test->setup_finished(0); $test->setup };
+  is $@, '', 'no error from Request::REST subclass';
+}
+
+done_testing;
+
 package MockContext;
 
 sub prepare_body { }