=================================================================== RCS file: /cvs/todotxt/Text-Todo-REST-API/t/GET.t,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- todotxt/Text-Todo-REST-API/t/GET.t 2010/01/17 20:18:58 1.2 +++ todotxt/Text-Todo-REST-API/t/GET.t 2010/01/17 21:07:26 1.3 @@ -7,15 +7,17 @@ # AUTHOR: Andrew Fresh (AAF), andrew@cpan.org # COMPANY: Red River Communications # CREATED: 01/07/10 19:11 -# REVISION: $AFresh1: GET.t,v 1.1 2010/01/17 19:41:24 andrew Exp $ +# REVISION: $AFresh1: GET.t,v 1.2 2010/01/17 20:18:58 andrew Exp $ #=============================================================================== use strict; use warnings; -use Test::More tests => 4; +use Test::More tests => 16; +use Data::Dumper; my $class; + BEGIN { $class = 'Text::Todo::REST::API'; use_ok( $class, "use $class" ); @@ -23,9 +25,81 @@ diag("Testing GET $class $Text::Todo::REST::API::VERSION"); -my $api = new_ok( $class, [ { basedir => 't', path_info => '/lists/todo' } ] ); +my $list_should_be = [ + { 'text' => '(A) entry 1 @one +uno', + 'md5' => '931e0831c31a70928b29de55778dc294', + 'line' => 1 + }, + { 'text' => 'entry 2 @two +dos', + 'md5' => 'b38dde8029c047e81379d9de581a6251', + 'line' => 2 + }, + { 'text' => '', + 'md5' => 'd41d8cd98f00b204e9800998ecf8427e', + 'line' => 3 + }, + { 'text' => 'x completed entry 4', + 'md5' => '8de0a2b65a50d5e30e84ad48af46fa78', + 'line' => 4 + }, + { 'text' => '(B) entry 5 is priority', + 'md5' => 'c1692dfbf3b5829b6bce44b1a1614980', + 'line' => 5 + }, + { 'text' => 'entry 6 +delete', + 'md5' => 'e1f6bf867f75aa019063782554407d02', + 'line' => 6 + } +]; -my $result; -ok( !eval { $result = $api->GET() }, 'GET method' ); -like( $@, '/^Unable to Dump \[files\]/', 'Failed GET as expected' ); -$result = undef; +my @pass = ( + { path_info => '/lists', + result => ['todo.txt'], + }, + { path_info => '/lists/todo', + result => $list_should_be, + }, + { path_info => '/lists/todo/list', + result => $list_should_be, + }, +); + +foreach my $p (@pass) { + my $api = new_ok( $class, + [ { basedir => 't', path_info => $p->{path_info} } ] ); + + my @result; + ok( eval { @result = $api->GET() }, + 'GET method (' . $p->{path_info} . ')' + ); + is_deeply( + \@result, + $p->{result}, + 'Failed GET as expected' + ); +} + +my @fail = ( + { path_info => '/lists/todo/entry', + result => '', + }, + { path_info => '/lists/todo/unsupported', + result => 'Unable to handle GET \[unsupported\]', + }, +); + +foreach my $p (@fail) { + my $api = new_ok( $class, + [ { basedir => 't', path_info => $p->{path_info} } ] ); + + my $result; + ok( !eval { $result = $api->GET() }, + 'GET method (' . $p->{path_info} . ')' + ); + like( + $@, + '/^' . $p->{result} . '/', + 'Failed GET as expected (' . $p->{result} . ')' + ); +} +