]> git.decadent.org.uk Git - maypole.git/blobdiff - t/maypole.t
Reorganised pod in Maypole.pm, finished doc roadmap, various minor pod updates, moved...
[maypole.git] / t / maypole.t
index 19418396367bc8ca3c18360b5192eefeed5e977f..4a0cd0234fec89e718f0ed2c0ad24eff1d885383 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 use strict;
 use warnings;
-use Test::More tests => 74;
+use Test::More tests => 84;
 use Test::MockModule;
 
 # module compilation
@@ -23,14 +23,16 @@ my $DECLINED = Maypole::Constants::DECLINED();
 my $ERROR    = Maypole::Constants::ERROR();
 
 # Maypole API
-my @API = qw/ config init_done view_object params query objects model_class
+my @API = qw/ config init_done view_object params query param objects model_class
               template_args output path args action template error document_encoding
               content_type table headers_in headers_out 
-              is_model_applicable setup init handler handler_guts
+              is_model_applicable setup setup_model init handler handler_guts
               call_authenticate call_exception additional_data
               authenticate exception parse_path make_path
               make_uri get_template_root get_request
               parse_location send_output
+             start_request_hook
+             session get_session
               /;
                 
 can_ok(Maypole => @API);
@@ -348,6 +350,7 @@ my $mock_table  = new Test::MockModule($table_class, no_auto => 1);
 # parse_path()
 {
     $r->path(undef);
+    
     $r->parse_path;
     is($r->path, 'frontpage', '... path() defaults to "frontpage"');
     
@@ -391,3 +394,38 @@ my $mock_table  = new Test::MockModule($table_class, no_auto => 1);
     eval {Maypole->send_output};
     like($@, qr/Do not use Maypole directly/, '... croaks - must be overriden');
 }
+
+# param()
+{
+       my $p = { foo => 'bar', 
+                 quux => [ qw/one two three/ ],
+                 buz => undef,
+                 num => 3,
+                 zero => 0,
+                 };
+                 
+       $r->{params} = $p;
+       
+       is_deeply( [keys %$p], [$r->param] );
+       
+       cmp_ok( $r->param('foo'), eq => 'bar' );
+       cmp_ok( $r->param('num'), '==' => 3 );
+       cmp_ok( $r->param('zero'), '==' => 0 );
+       
+       ok( ! defined $r->param('buz') );
+       
+       # scalar context returns the 1st value, not a ref
+       cmp_ok( scalar $r->param('quux'), eq => 'one' );
+       is_deeply( [$r->param('quux')], [ qw/one two three/ ] );
+       
+       $r->param(foo => 'booze');
+       cmp_ok( $r->param('foo'), 'eq', 'booze' );
+       
+       $r->param(foo => undef);
+       ok( ! defined $r->param('foo') );
+       
+       # cannot introduce new keys
+       $r->param(new => 'sox');
+       ok( ! defined $r->param('new') );
+}
+