X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=t%2Fmaypole.t;h=4a0cd0234fec89e718f0ed2c0ad24eff1d885383;hb=ad24ffc85f25a9b73a28cd326c3b3caea234adbf;hp=19418396367bc8ca3c18360b5192eefeed5e977f;hpb=ba579915a0d92c87a8d1baad0e7709ea9b3a2559;p=maypole.git diff --git a/t/maypole.t b/t/maypole.t index 1941839..4a0cd02 100755 --- a/t/maypole.t +++ b/t/maypole.t @@ -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') ); +} +