Fix tests to skip if YAML::Syck is not installed
[catagits/Catalyst-Action-REST.git] / t / catalyst-action-deserialize.t
index b524b48..e276a13 100644 (file)
@@ -1,62 +1,37 @@
-package Test::Catalyst::Action::Deserialize;
-
-use FindBin;
-
-use lib ("$FindBin::Bin/../lib");
-
-use strict;
-use warnings;
-
-use Catalyst::Runtime '5.70';
-
-use Catalyst;
-
-__PACKAGE__->config(
-    name => 'Test::Catalyst::Action::Deserialize',
-    serialize => {
-        'stash_key' => 'rest',
-        'map'       => {
-            'text/x-yaml'        => 'YAML',
-            'text/x-data-dumper' => [ 'Data::Serializer', 'Data::Dumper' ],
-            'text/broken'        => 'Broken',
-        },
-    }
-);
-
-__PACKAGE__->setup;
-
-sub test :Local :ActionClass('Deserialize') {
-    my ( $self, $c ) = @_;
-    $c->res->output($c->req->data->{'kitty'});
-}
-
-package main;
-
 use strict;
 use warnings;
-use Test::More qw(no_plan);
+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;