Fixing the tests to run without JSON at all, revamping the author/contrib section
[catagits/Catalyst-Action-REST.git] / t / catalyst-action-serialize-accept.t
index 12f5df6..13dead9 100644 (file)
@@ -18,7 +18,7 @@ __PACKAGE__->config(
         'stash_key' => 'rest',
         'map'       => {
             'text/x-yaml'        => 'YAML',
-            'application/json'        => 'JSON',
+            'application/json'   => 'JSON',
             'text/x-data-dumper' => [ 'Data::Serializer', 'Data::Dumper' ],
             'text/broken'        => 'Broken',
         },
@@ -49,7 +49,6 @@ use Test::More tests => 10;
 use Data::Serializer;
 use FindBin;
 use Data::Dump qw(dump);
-use JSON::Syck; 
 
 use lib ("$FindBin::Bin/lib", "$FindBin::Bin/../lib", "$FindBin::Bin/broken");
 use Test::Rest;
@@ -69,21 +68,32 @@ EOH
        $req->remove_header('Content-Type');
        $req->header('Accept', 'text/x-yaml');
        my $res = request($req);
-       ok( $res->is_success, 'GET the serialized request succeeded' );
-       is( $res->content, $data, "Request returned proper data");
-       is( $res->header('Content-type'), 'text/x-yaml', '... with expected content-type')
+    SKIP: {
+        skip "can't test text/x-yaml without YAML support",
+        3 if ( 
+                not $res->is_success and 
+                $res->content =~ m#Content-Type text/x-yaml is not supported# 
+             );
+           ok( $res->is_success, 'GET the serialized request succeeded' );
+           is( $res->content, $data, "Request returned proper data");
+           is( $res->header('Content-type'), 'text/x-yaml', '... with expected content-type')
+
+    };
 }
 
-{
-        my $at = Test::Rest->new('content_type' => 'text/doesnt-exist');               
+SKIP: {
+    eval 'require JSON';
+    skip "can't test application/json without JSON support", 3 if $@;
+    my $json = JSON->new;
+    my $at = Test::Rest->new('content_type' => 'text/doesnt-exist');
        my $req = $at->get(url => '/test');
        $req->header('Accept', 'application/json');
        my $res = request($req);
-       ok( $res->is_success, 'GET the serialized request succeeded' );
-        my $ret = JSON::Syck::Load($res->content);
-       is( $ret->{lou}, 'is my cat', "Request returned proper data");
-       is( $res->header('Content-type'), 'application/json', 'Accept header used if content-type mapping not found')
-}
+    ok( $res->is_success, 'GET the serialized request succeeded' );
+    my $ret = $json->decode($res->content);
+    is( $ret->{lou}, 'is my cat', "Request returned proper data");
+    is( $res->header('Content-type'), 'application/json', 'Accept header used if content-type mapping not found')
+};
 
 # Make sure we don't get a bogus content-type when using default
 # serializer (rt.cpan.org ticket 27949)