X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=t%2Fmaypole.t;h=b4f9c8b4f8d79b8d0c022f25c971e05e05dbb317;hb=43c32b954aa111a98b2d886f0f9c4cf18fe8dd3c;hp=9e49186fe884a1004903131049d120900a8e4e73;hpb=12d8a77a713d5ed4f08414e5f34e96d45f60e2d3;p=maypole.git diff --git a/t/maypole.t b/t/maypole.t index 9e49186..b4f9c8b 100755 --- a/t/maypole.t +++ b/t/maypole.t @@ -5,9 +5,11 @@ use Test::More tests => 84; use Test::MockModule; # module compilation +# Test 1 require_ok('Maypole'); -# loaded modules +# loaded modules +# Tests 2 - 8 { ok($Maypole::VERSION, 'defines $VERSION'); ok($INC{'Maypole/Config.pm'}, 'loads Maypole::Config'); @@ -35,11 +37,10 @@ my @API = qw/ config init_done view_object params query param objects model_clas get_session get_user /; - -can_ok(Maypole => @API); - -ok( ! UNIVERSAL::can(Maypole => 'is_applicable'), 'no is_applicable() method' ); +# Tests 9 to 13 +can_ok(Maypole => @API); +ok( UNIVERSAL::can(Maypole => 'is_applicable'), 'is_applicable() method' ); # added is_applicable back in ok(Maypole->config->isa('Maypole::Config'), 'config is a Maypole::Config object'); ok(! Maypole->init_done, '... which is false by default'); is(Maypole->view_object, undef, '... which is undefined'); @@ -54,6 +55,7 @@ is(Maypole->view_object, undef, '... which is undefined'); # back to package main; my $driver_class = 'MyDriver'; +# Test 14 # subclass inherits API can_ok($driver_class => @API); @@ -74,6 +76,8 @@ $mock_model->mock( ); +# Tests 15 - 21 +warn "Tests 15 to 21\n\n"; # setup { # 2.11 - removed tests to check the installed handler was a different ref after setup(). @@ -106,6 +110,9 @@ $mock_model->mock( $driver_class->config->model($model_class); } + +# Tests 22 - 27 +warn "Tests 22 to 27\n\n"; # Mock the view class my $view_class = 'Maypole::View::TT'; my $mock_view = Test::MockModule->new($view_class); @@ -136,6 +143,8 @@ $mock_view->mock( my ($r, $req); # request objects +# Tests 28 - 38 +warn "tests 28 to 38\n\n"; # handler() { my $init = 0; @@ -176,6 +185,10 @@ my ($r, $req); # request objects ok($init && $driver_class->init_done, "... init() called if !init_done()"); } + +# Tests 39 - 48 +warn "Tests 39 - 48\n\n"; +# Testing handler_guts { # handler_guts() { @@ -189,7 +202,7 @@ my ($r, $req); # request objects my $mock_table = new Test::MockModule($table_class, no_auto => 1); $mock_driver->mock( - #is_applicable => sub {push @{$called{applicable}},\@_; $applicable}, + is_applicable => sub {push @{$called{applicable}},\@_; $applicable}, is_model_applicable => sub {push @{$called{applicable}},\@_; $applicable}, get_request => sub {($r, $req) = @_}, @@ -212,11 +225,13 @@ my ($r, $req); # request objects # allow request $applicable = 1; - $r->{path} = '/table/action'; + $r->{path} = '/table/action'; $r->parse_path; my $status = $r->handler_guts(); + warn "model class ", $r->model_class, "table class : $table_class\n"; + is($r->model_class, $table_class, '... sets model_class from table()'); ok($called{additional_data}, '... call additional_data()'); is($status, $OK, '... return status = OK'); @@ -263,6 +278,8 @@ my ($r, $req); # request objects # ... TODO view processing error handling } +# Tests 49 - 53 +warn "Tests 49 to 53\n\n"; # is_model_applicable() { $r->config->display_tables([qw(one two)]); @@ -287,9 +304,11 @@ my ($r, $req); # request objects is($true_false, 0, '... returns 0 unless $r->table is in ok_tables'); } + +# Tests 54 - 58 +warn "Tests 54 to 58\n\n"; my $mock_driver = new Test::MockModule($driver_class, no_auto => 1); my $mock_table = new Test::MockModule($table_class, no_auto => 1); - # call_authenticate() { my %auth_calls; @@ -298,21 +317,23 @@ my $mock_table = new Test::MockModule($table_class, no_auto => 1); ); my $status = $r->call_authenticate; is_deeply($auth_calls{model_auth}, [$table_class, $r], - '... calls model_class->authenticate if it exists'); - is($status, $OK, '... and returns its status (OK)'); + '... calls model_class->authenticate if it exists'); # 54 + is($status, $OK, '... and returns its status (OK)'); # 55 $mock_table->mock(authenticate => sub {$DECLINED}); $status = $r->call_authenticate; - is($status, $DECLINED, '... or DECLINED, as appropriate'); + is($status, $DECLINED, '... or DECLINED, as appropriate'); # 56 $mock_table->unmock('authenticate'); $mock_driver->mock(authenticate => sub {return $DECLINED}); $status = $r->call_authenticate; - is($status, $DECLINED, '... otherwise it calls authenticte()'); + is($status, $DECLINED, '... otherwise it calls authenticte()'); # 57 $mock_driver->unmock('authenticate'); $status = $r->call_authenticate; - is($status, $OK, '... the default authenticate is OK'); + is($status, $OK, '... the default authenticate is OK'); # 58 } +# Tests 59 - 63 +warn "Tests 59 to 63\n\n"; # call_exception() { my %ex_calls; @@ -338,16 +359,20 @@ my $mock_table = new Test::MockModule($table_class, no_auto => 1); is($status, $ERROR, '... the default exception is ERROR'); } +# Test 64 # authenticate() { is(Maypole->authenticate(), $OK, '... returns OK'); } +# Test 65 # exception() { is(Maypole->exception(), $ERROR, '... returns ERROR'); } +# Tests 66 to 71 +warn "Tests 66 to 71\n\n"; # parse_path() { $r->path(undef); @@ -378,24 +403,28 @@ my $mock_table = new Test::MockModule($table_class, no_auto => 1); # make_uri() and make_path() - see pathtools.t - +# Test 72 # get_template_root() { is(Maypole->get_template_root(), '.', '... returns "."'); } +# Test 73 # parse_location() { eval {Maypole->parse_location()}; like($@, qr/Do not use Maypole directly/, '... croaks - must be overriden'); } +# Test 74 # send_output() { eval {Maypole->send_output}; like($@, qr/Do not use Maypole directly/, '... croaks - must be overriden'); } +# Tests 75 - 84 +warn "Tests 75 to 84\n\n"; # param() { my $p = { foo => 'bar', @@ -407,26 +436,26 @@ my $mock_table = new Test::MockModule($table_class, no_auto => 1); $r->{params} = $p; - is_deeply( [keys %$p], [$r->param] ); + is_deeply( [keys %$p], [$r->param] ); # 75 - cmp_ok( $r->param('foo'), eq => 'bar' ); - cmp_ok( $r->param('num'), '==' => 3 ); - cmp_ok( $r->param('zero'), '==' => 0 ); + cmp_ok( $r->param('foo'), eq => 'bar' ); # 76 + cmp_ok( $r->param('num'), '==' => 3 ); # 77 + cmp_ok( $r->param('zero'), '==' => 0 ); # 78 - ok( ! defined $r->param('buz') ); + ok( ! defined $r->param('buz') ); # 79 # 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/ ] ); + cmp_ok( scalar $r->param('quux'), eq => 'one' ); # 80 + is_deeply( [$r->param('quux')], [ qw/one two three/ ] ); # 81 $r->param(foo => 'booze'); - cmp_ok( $r->param('foo'), 'eq', 'booze' ); + cmp_ok( $r->param('foo'), 'eq', 'booze' ); # 82 $r->param(foo => undef); - ok( ! defined $r->param('foo') ); + ok( ! defined $r->param('foo') ); # 83 # cannot introduce new keys $r->param(new => 'sox'); - ok( ! defined $r->param('new') ); + ok( ! defined $r->param('new') ); # 84 }