[libdancer-plugin-rest-perl] 04/12: fix error dispatch

Jonas Smedegaard dr at jones.dk
Wed Jul 2 11:45:04 UTC 2014


This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag v0.08
in repository libdancer-plugin-rest-perl.

commit a77a1b74d9775aae98724484ce57e6949262b6d0
Author: Yanick Champoux <yanick at babyl.dyndns.org>
Date:   Mon Mar 3 15:07:48 2014 -0500

    fix error dispatch
---
 lib/Dancer/Plugin/REST.pm | 17 ++++++++---------
 t/04_plugin_settings.t    | 12 ++++++------
 2 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/lib/Dancer/Plugin/REST.pm b/lib/Dancer/Plugin/REST.pm
index 4d538d6..0454404 100644
--- a/lib/Dancer/Plugin/REST.pm
+++ b/lib/Dancer/Plugin/REST.pm
@@ -31,25 +31,24 @@ register prepare_serializer_for_format => sub {
 
     hook 'before' => sub {
 
-        my $format = params->{'format'};
-        return unless defined $format;
+        my $format = params->{'format'}
+            or return;
 
         # remember what was there before
         $default_serializer = setting 'serializer';
 
-        my $serializer = $serializers->{$format};
-        unless (defined $serializer) {
-            return halt(
+        my $serializer = $serializers->{$format}
+            or return halt(
                 Dancer::Error->new(
                     code    => 404,
+                    title   => "unsupported format requested",
                     message => "unsupported format requested: " . $format
-                )
+                )->render
             );
-        }
 
         set serializer => $serializer;
-        my $ct = $content_types->{$format} || setting('content_type');
-        content_type $ct;
+
+        content_type $content_types->{$format} || setting('content_type');
     };
 
     hook after => sub {
diff --git a/t/04_plugin_settings.t b/t/04_plugin_settings.t
index 1b3b140..b711699 100644
--- a/t/04_plugin_settings.t
+++ b/t/04_plugin_settings.t
@@ -18,6 +18,8 @@ my $yaml = YAML::Dump($data);
     use Dancer::Plugin::REST;
 
     set environment => 'test';
+    set show_errors => 1;
+
     prepare_serializer_for_format;
 
     get '/' => sub { "root" };
@@ -41,17 +43,13 @@ my @tests = (
         request => [GET => '/foo.yml'],
         response => $yaml,
     },
-    { 
-        request => [GET => '/foo.foobar'],
-        response => qr/unsupported format requested: foobar/ms,
-    },
     {
         request => [GET => '/'],
         response => 'root',
     },
 );
 
-plan tests => scalar(@tests);
+plan tests => 6;
 
 for my $test ( @tests ) {
     my $response = dancer_response(@{$test->{request}});
@@ -65,5 +63,7 @@ for my $test ( @tests ) {
     }
 }
 
+my $response = dancer_response( GET => '/foo.foobar' );
 
-
+is $response->status => 404, 'error code 404';
+like $response->content => qr/unsupported format requested: foobar/ms;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libdancer-plugin-rest-perl.git



More information about the Pkg-perl-cvs-commits mailing list