X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=t%2F01basics.t;h=6fa0c1e1241f1b410004e797600bac45456cb800;hb=1ec67be9e8b738cbd2a523523af3bd7e61f98480;hp=9c3d4b9531cbcf6d05a972e85d4fe00af2d7c206;hpb=8f6d0577a304bb99d072c9eaf707ab278927bb09;p=maypole.git diff --git a/t/01basics.t b/t/01basics.t index 9c3d4b9..6fa0c1e 100644 --- a/t/01basics.t +++ b/t/01basics.t @@ -1,17 +1,36 @@ -# vim:ft=perl +#!/usr/bin/perl -w use Test::More; -use lib 'ex'; # Where BeerDB should live -BEGIN { if (eval { require BeerDB }) { - plan tests => 12; - } else { Test::More->import(skip_all =>"SQLite not working or BeerDB module could not be loaded: $@") } - } +use lib 'examples'; # Where BeerDB should live +BEGIN { + $ENV{BEERDB_DEBUG} = 0; + + eval { require BeerDB }; + Test::More->import( skip_all => + "SQLite not working or BeerDB module could not be loaded: $@" + ) if $@; + + plan tests => 18; + +} use Maypole::CLI qw(BeerDB); use Maypole::Constants; $ENV{MAYPOLE_TEMPLATES} = "t/templates"; isa_ok( (bless {},"BeerDB") , "Maypole"); -like(BeerDB->call_url("http://localhost/beerdb/"), qr/frontpage/, "Got the front page"); +# Test the effect of trailing slash on config->uri_base and request URI +(my $uri_base = BeerDB->config->uri_base) =~ s:/$::; +BeerDB->config->uri_base($uri_base); +like(BeerDB->call_url("http://localhost/beerdb/"), qr/frontpage/, + "Got frontpage, trailing '/' on request but not uri_base"); +like(BeerDB->call_url("http://localhost/beerdb"), qr/frontpage/, + "Got frontpage, no trailing '/' on request or uri_base"); +BeerDB->config->uri_base($uri_base . '/'); +like(BeerDB->call_url("http://localhost/beerdb/"), qr/frontpage/, + "Got frontpage, trailing '/' on uri_base and request"); +like(BeerDB->call_url("http://localhost/beerdb"), qr/frontpage/, + "Got frontpage, trailing '/' on uri_base but not request"); + like(BeerDB->call_url("http://localhost/beerdb/beer/list"), qr/Organic Best/, "Found a beer in the list"); my (%classdata)=split /\n/, BeerDB->call_url("http://localhost/beerdb/beer/classdata"); is ($classdata{plural},'beers','classdata.plural'); @@ -20,9 +39,14 @@ like ($classdata{cgi},qr/^HTML::Element/,'classdata.cgi'); is ($classdata{table},'beer','classdata.table'); is ($classdata{name},'BeerDB::Beer','classdata.name'); is ($classdata{colnames},'Abv','classdata.colnames'); -is($classdata{columns}, 'abv brewery id name notes price score style url', +is($classdata{columns}, 'abv brewery id name notes price score style tasted url', 'classdata.columns'); is($classdata{list_columns}, 'score name price style brewery url', 'classdata.list_columns'); is ($classdata{related_accessors},'pubs','classdata.related_accessors'); +# test Maypole::load_custom_class() +can_ok(BeerDB::Beer => 'fooey'); # defined in BeerDB::Beer +can_ok(BeerDB::Beer => 'floob'); # defined in BeerDB::Base + +is_deeply( [@BeerDB::Beer::ISA], [qw/Class::DBI::SQLite Maypole::Model::CDBI BeerDB::Base/] );