=================================================================== RCS file: /cvs/todotxt/Text-Todo/t/dudelicious.t,v retrieving revision 1.2 retrieving revision 1.10 diff -u -r1.2 -r1.10 --- todotxt/Text-Todo/t/dudelicious.t 2010/04/28 01:33:05 1.2 +++ todotxt/Text-Todo/t/dudelicious.t 2010/05/05 02:32:12 1.10 @@ -1,18 +1,74 @@ -use Test::More tests => 3; +#!perl +# $AFresh1: dudelicious.t,v 1.9 2010/05/05 01:24:20 andrew Exp $ +use Test::More tests => 75; +use strict; +use warnings; + +use File::Temp qw/ tempdir /; +use File::Copy qw/ cp /; +use File::Spec; + +my $have_test_json = 1; + BEGIN { - eval "use Test::Mojo"; - plan skip_all => "Test::Mojo required for testing dudelicious" if $@; + eval "use Test::Mojo"; + plan skip_all => "Test::Mojo required for testing dudelicious" if $@; +} - use lib 'bin'; - require 'dudelicious.pl'; - Dudelicious->import; +my $todo_dir = tempdir( 'todo-XXXXXXXXX', CLEANUP => 1, TMPDIR => 1 ); +$ENV{DUDELICIOUS_HOME} = $todo_dir; + +foreach my $file qw( todo1.txt todo.list.txt dudelicious.conf ) { + cp( File::Spec->catfile( 't', $file ), + File::Spec->catfile( $todo_dir, $file ), + ) || die "Couldn't cp [$todo_dir]/[$file]: $!"; } -my $app = Dudelicious::app; -$app->log->level('error'); +require File::Spec->catfile( 'bin', 'dudelicious.pl' ); +Dudelicious->import; +Dudelicious->app->log->level('error'); my $t = Test::Mojo->new; -# Index page -$t->get_ok('/')->status_is(200)->content_like(qr/Funky/); +my @exts = ( q{}, '.html', '.txt', '.json' ); + +foreach my $p ( + '/', + ( map { '/l/todo1' . $_ } @exts ), + ( map { '/l/todo1/e/1' . $_ } @exts ), + ( map { '/l/todo1/e/4' . $_ } @exts ), + ( map { '/l/todo1/t' . $_ } @exts ), + ( map { '/l/todo1/t/project' . $_ } @exts ), + ( map { '/l/todo1/t/context' . $_ } @exts ), + ) +{ + my ( $volume, $directories, $file ) = File::Spec->splitpath($p); + + $file ||= 'index.html'; + $file .= '.html' if $file !~ /\.[^.]+$/xms; + + my $f = File::Spec->catfile( 't', 'dudelicious', $volume, $directories, + $file ); + +SKIP: { + skip "$f does not exist", 3 if !-e $f; + + open my $fh, '<', $f or die $f . ': ' . $!; + my $content = do { local $/; <$fh> }; + close $fh; + + $t->get_ok( $p, {}, undef, "Get [$f] from [$p]" ) + ->status_is(200, 'With 200 status'); + + if ( $f =~ /\.json$/xms ) { + $t->json_content_is( Mojo::JSON->decode($content), + 'Check JSON content' ); + } + else { + $t->content_like( qr/\Q$content\E/xms, 'Check content' ); + } + } +} + +#done_testing();