Fix tests to skip if YAML::Syck is not installed
[catagits/Catalyst-Action-REST.git] / t / catalyst-action-deserialize.t
index ca08fa4..e276a13 100644 (file)
@@ -1,28 +1,37 @@
 use strict;
 use warnings;
-use Test::More tests => 5;
+use Test::More;
+use Test::Requires qw(YAML::Syck);
 use YAML::Syck;
 use FindBin;
-use Data::Dump qw(dump);
 
 use lib ("$FindBin::Bin/lib", "$FindBin::Bin/../lib", "$FindBin::Bin/broken");
 use Test::Rest;
 
-# Should use Data::Dumper, via Data::Serializer 
 my $t = Test::Rest->new('content_type' => 'text/x-yaml');
 
-use_ok 'Catalyst::Test', 'Test::Catalyst::Action::Deserialize';
+use_ok 'Catalyst::Test', 'Test::Catalyst::Action::REST';
+my $url = '/deserialize/test';
 
-my $res = request($t->put( url => '/test', data => Dump({ kitty => "LouLou" })));
+my $req = $t->put( url => $url, data => Dump({ kitty => "LouLou" }));
+my $res = request($req);
 ok( $res->is_success, 'PUT Deserialize request succeeded' );
 is( $res->content, "LouLou", "Request returned deserialized data");
 
+$req->method('GET');
+isnt( request($req)->content, 'LouLou', 'GET request with body does not work by default' );
+
+$req->url('/deserialize/test_action_args');
+is( request($req)->content, 'LouLou', 'GET request via action_args');
+
 my $nt = Test::Rest->new('content_type' => 'text/broken');
-my $bres = request($nt->put( url => '/test', data => Dump({ kitty => "LouLou" })));
+my $bres = request($nt->put( url => $url, data => Dump({ kitty => "LouLou" })));
 is( $bres->code, 415, 'PUT on un-useable Deserialize class returns 415');
 
 my $ut = Test::Rest->new('content_type' => 'text/not-happening');
-my $ures = request($ut->put( url => '/test', data => Dump({ kitty => "LouLou" })));
+my $ures = request($ut->put( url => $url, data => Dump({ kitty => "LouLou" })));
 is ($bres->code, 415, 'GET on unknown Content-Type returns 415');
 
 1;
+
+done_testing;