Pull in some tests from CDBI 3.16 that already work.
Michael G Schwern [Fri, 10 Aug 2007 07:56:14 +0000 (00:56 -0700)]
Try to fix some issues with the testlibs.

t/cdbi-t/08-inheritcols.t [new file with mode: 0644]
t/cdbi-t/22-deflate_order.t [new file with mode: 0644]
t/cdbi-t/26-mutator.t [new file with mode: 0644]
t/testlib/MyBase.pm
t/testlib/MyFoo.pm
t/testlib/PgBase.pm

diff --git a/t/cdbi-t/08-inheritcols.t b/t/cdbi-t/08-inheritcols.t
new file mode 100644 (file)
index 0000000..7c66949
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Test::More tests => 3;
+
+use Class::DBI;
+
+package A;
+@A::ISA = qw(Class::DBI);
+__PACKAGE__->columns(Primary => 'id');
+
+package A::B;
+@A::B::ISA = 'A';
+__PACKAGE__->columns(All => qw(id b1));
+
+package A::C;
+@A::C::ISA = 'A';
+__PACKAGE__->columns(All => qw(id c1 c2 c3));
+
+package main;
+is join (' ', sort A->columns),    'id',          "A columns";
+is join (' ', sort A::B->columns), 'b1 id',       "A::B columns";
+is join (' ', sort A::C->columns), 'c1 c2 c3 id', "A::C columns";
diff --git a/t/cdbi-t/22-deflate_order.t b/t/cdbi-t/22-deflate_order.t
new file mode 100644 (file)
index 0000000..965bc49
--- /dev/null
@@ -0,0 +1,24 @@
+$| = 1;
+use strict;
+
+use Test::More;
+
+eval { require Time::Piece::MySQL };
+plan skip_all => "Need Time::Piece::MySQL for this test" if $@;
+
+eval { require 't/testlib/Log.pm' };
+plan skip_all => "Need MySQL for this test" if $@;
+
+plan tests => 2;
+
+package main;
+
+my $log = Log->insert( { message => 'initial message' } );
+ok eval { $log->datetime_stamp }, "Have datetime";
+diag $@ if $@;
+
+$log->message( 'a revised message' );
+$log->update;
+ok eval { $log->datetime_stamp }, "Have datetime after update";
+diag $@ if $@;
+
diff --git a/t/cdbi-t/26-mutator.t b/t/cdbi-t/26-mutator.t
new file mode 100644 (file)
index 0000000..a7f8f98
--- /dev/null
@@ -0,0 +1,41 @@
+use strict;
+use Test::More;
+
+BEGIN {
+       eval "use DBD::SQLite";
+       plan $@
+               ? (skip_all => 'needs DBD::SQLite for testing')
+               : (tests => 6);
+}
+
+use lib 't/testlib';
+require Film;
+
+sub Film::accessor_name_for {
+       my ($class, $col) = @_;
+       return "sheep" if lc $col eq "numexplodingsheep";
+       return $col;
+}
+
+my $data = {
+       Title    => 'Bad Taste',
+       Director => 'Peter Jackson',
+       Rating   => 'R',
+};
+
+my $bt;
+eval {
+       my $data = $data;
+       $data->{sheep} = 1;
+       ok $bt = Film->insert($data), "Modified accessor - with  
+accessor";
+       isa_ok $bt, "Film";
+};
+is $@, '', "No errors";
+
+eval {
+       ok $bt->sheep(2), 'Modified accessor, set';
+       ok $bt->update, 'Update';
+};
+is $@, '', "No errors";
+
index da1e86f..7951482 100644 (file)
@@ -2,7 +2,9 @@ package # hide from PAUSE
     MyBase;
 
 use strict;
-use base qw(DBIx::Class);
+use base qw(DBIx::Class::CDBICompat);
+
+use DBI;
 
 use vars qw/$dbh/;
 
index fa536ab..d645d3d 100644 (file)
@@ -13,7 +13,7 @@ __PACKAGE__->has_a(
        inflate => sub { Date::Simple->new(shift) },
        deflate => 'format',
 );
-__PACKAGE__->find_column('tdate')->placeholder("IF(1, CURDATE(), ?)");
+#__PACKAGE__->find_column('tdate')->placeholder("IF(1, CURDATE(), ?)");
 
 sub create_sql {
        return qq{
index 5428a50..8c13493 100644 (file)
@@ -2,7 +2,7 @@ package # hide from PAUSE
     PgBase;
 
 use strict;
-use base 'DBIx::Class';
+use base 'DBIx::Class::CDBICompat';
 
 my $db   = $ENV{DBD_PG_DBNAME} || 'template1';
 my $user = $ENV{DBD_PG_USER}   || 'postgres';