]> git.decadent.org.uk Git - maypole.git/commitdiff
added test cases for classmetadata.
authorMarcus Ramberg <mramberg@cpan.org>
Tue, 19 Oct 2004 20:07:30 +0000 (20:07 +0000)
committerMarcus Ramberg <mramberg@cpan.org>
Tue, 19 Oct 2004 20:07:30 +0000 (20:07 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@241 48953598-375a-da11-a14b-00016c27c3ee

ex/BeerDB.pm
t/01basics.t
t/templates/custom/classdata [new file with mode: 0644]

index 3ff11650be06e050a22afb761c216d2b7a430c86..26f8e94cd249197ff919a9746120421e09245235 100644 (file)
@@ -1,20 +1,21 @@
 package BeerDB;
-use base 'Maypole::Application';
+use Maypole::Application;
 use Class::DBI::Loader::Relationship;
 
+BEGIN {
 # This is the sample application. Change this to the path to your
 # database. (or use mysql or something)
 BeerDB->setup("dbi:SQLite:t/beerdb.db");
-#BeerDB->setup("dbi:mysql:beerdb");
+}
 
 # Give it a name.
-BeerDB->config->{application_name} = 'The Beer Database';
+BeerDB->config->application_name('The Beer Database');
 
 # Change this to the root of the web space.
-BeerDB->config->{uri_base} = "http://localhost/beerdb/";
+BeerDB->config->uri_base("http://localhost/beerdb/");
 #BeerDB->config->{uri_base} = "http://neo.trinity-house.org.uk/beerdb/";
 
-BeerDB->config->{rows_per_page} = 10;
+BeerDB->config->rows_per_page(10);
 
 # Handpumps should not show up.
 BeerDB->config->{display_tables} = [qw[beer brewery pub style]];
@@ -29,4 +30,13 @@ BeerDB->config->{loader}->relationship($_) for (
     "a brewery produces beers",
     "a style defines beers",
     "a pub has beers on handpumps");
+
+#package BeerDB::Beer;
+#our %remember;
+#sub MODIFY_CODE_ATTRIBUTES { $remember{ $_[1] } = $_[2]; () }
+#sub FETCH_CODE_ATTRIBUTES { $remember{ $_[1] } }
+
+sub BeerDB::Beer::classdata :Exported {};
+sub BeerDB::Beer::list_columns  { return qw/score name price style brewery url/};
+
 1;
index 3aaa0e986c231f345abcb50447cbf82af24a9e44..9c3d4b9531cbcf6d05a972e85d4fe00af2d7c206 100644 (file)
@@ -2,7 +2,7 @@
 use Test::More;
 use lib 'ex'; # Where BeerDB should live
 BEGIN { if (eval { require BeerDB }) { 
-            plan tests => 3;
+            plan tests => 12;
         } else { Test::More->import(skip_all =>"SQLite not working or BeerDB module could not be loaded: $@") }
       }
 use Maypole::CLI qw(BeerDB);
@@ -13,3 +13,16 @@ isa_ok( (bless {},"BeerDB") , "Maypole");
 
 like(BeerDB->call_url("http://localhost/beerdb/"), qr/frontpage/, "Got the front page");
 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');
+is ($classdata{moniker},'beer','classdata.moniker');
+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',
+   'classdata.columns');
+is($classdata{list_columns}, 'score name price style brewery url',
+   'classdata.list_columns');
+is ($classdata{related_accessors},'pubs','classdata.related_accessors');
+
diff --git a/t/templates/custom/classdata b/t/templates/custom/classdata
new file mode 100644 (file)
index 0000000..d5f60cc
--- /dev/null
@@ -0,0 +1,18 @@
+name
+[% classmetadata.name %]
+table
+[% classmetadata.table %]
+columns
+[% classmetadata.columns.join(' ')%]
+list_columns
+[% classmetadata.list_columns.join(' ') %]
+colnames
+[% classmetadata.colnames.abv %]
+related_accessors
+[% classmetadata.related_accessors.join(' ') %]
+moniker
+[% classmetadata.moniker %]
+plural
+[% classmetadata.plural %]
+cgi
+[% classmetadata.cgi.abv%]