[libdancer-plugin-rest-perl] 13/63: test script for resource

Jonas Smedegaard dr at jones.dk
Wed Jul 2 11:44:50 UTC 2014


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

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

commit 20c20147328c09129e959db272c5731aad7a7d9e
Author: Alexis Sukrieh <sukria at sukria.net>
Date:   Sat Apr 3 17:25:28 2010 +0200

    test script for resource
---
 t/03_resource.t | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/t/03_resource.t b/t/03_resource.t
new file mode 100644
index 0000000..f6a25e8
--- /dev/null
+++ b/t/03_resource.t
@@ -0,0 +1,84 @@
+use strict;
+use warnings;
+use Dancer::ModuleLoader;
+use Test::More import => ['!pass'];
+
+plan tests => 7;
+
+{
+    package Webservice;
+    use Dancer;
+    use Dancer::Plugin::REST;
+
+    resource user => 
+        'get' => \&on_get_user,
+        'create' => \&on_create_user,
+        'delete' => \&on_delete_user,
+        'update' => \&on_update_user;
+
+    my $users = {};
+    my $last_id = 0;
+
+    sub on_get_user {
+        my $id = params->{'id'};
+        { user => $users->{$id} };
+    }
+
+    sub on_create_user {
+        my $id = ++$last_id;
+        my $user = params('body');
+        $user->{id} = $id;
+        $users->{$id} = $user;
+
+        { user => $users->{$id} };
+    }
+
+    sub on_delete_user {
+        my $id = params->{'id'};
+        my $deleted = $users->{$id};
+        delete $users->{$id};
+        { user => $deleted };
+    }
+
+    sub on_update_user {
+        my $id = params->{'id'};
+        my $user = $users->{$id};
+        return { user => undef } unless defined $user;
+
+        $users->{$id} = { %$user, %{params('body')} };
+        { user => $users->{$id} };
+    }
+}
+
+use lib 't';
+use TestUtils;
+
+my $r = get_response_for_request(GET => '/user/1');
+is_deeply $r->{content}, {user => undef},
+    "user 1 is not defined";
+
+$r = get_response_for_request(POST => '/user', { name => 'Alexis' });
+is_deeply $r->{content}, { user => { id => 1, name => "Alexis" } },
+    "create user works";
+
+$r = get_response_for_request(GET => '/user/1');
+is_deeply $r->{content}, {user => { id => 1, name => 'Alexis'}},
+    "user 1 is defined";
+
+$r = get_response_for_request(PUT => '/user/1', { nick => 'sukria', name =>
+'Alexis Sukrieh' });
+is_deeply $r->{content}, {user => { id => 1, name => 'Alexis Sukrieh', nick => 'sukria'}},
+    "user 1 is updated";
+
+$r = get_response_for_request(DELETE => '/user/1');
+is_deeply $r->{content}, {user => { id => 1, name => 'Alexis Sukrieh', nick => 'sukria'}},
+    "user 1 is deleted";
+
+$r = get_response_for_request(GET => '/user/1');
+is_deeply $r->{content}, {user => undef},
+    "user 1 is not defined";
+
+$r = get_response_for_request(POST => '/user', { name => 'Franck Cuny' });
+is_deeply $r->{content}, { user => { id => 2, name => "Franck Cuny" } },
+    "id is correctly increased";
+

-- 
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