X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F24loader_subclass.t;h=2d3b595283cd844114e65dfafeccb5b6bd09fcfc;hb=f868218c0f44b1ca1c82f9c5125a0de45f7c88ba;hp=43de59bdad004b3e31bccf669a7dfb7928d96570;hpb=3953cbee8b603198ebe35357210009f2f92284e3;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/24loader_subclass.t b/t/24loader_subclass.t index 43de59b..2d3b595 100644 --- a/t/24loader_subclass.t +++ b/t/24loader_subclass.t @@ -4,14 +4,45 @@ use Test::More; use lib qw(t/lib); use make_dbictest_db; -{ - package DBICTest::Schema; - use base qw/ DBIx::Class::Schema::Loader /; - __PACKAGE__->loader_options( loader_class => 'TestLoaderSubclass' ); -} +my %loader_class = ( + 'TestLoaderSubclass' => 'TestLoaderSubclass', + 'TestLoaderSubclass_NoRebless' => 'TestLoaderSubclass_NoRebless', + '::DBI::SQLite' => 'DBIx::Class::Schema::Loader::DBI::SQLite' +); + +my %invocations = ( + loader_class => sub { + package DBICTest::Schema::1; + use base qw/ DBIx::Class::Schema::Loader /; + __PACKAGE__->_loader_invoked(0); + __PACKAGE__->naming('current'); + __PACKAGE__->loader_class(shift); + __PACKAGE__->connect($make_dbictest_db::dsn); + }, + connect_info => sub { + package DBICTeset::Schema::2; + use base qw/ DBIx::Class::Schema::Loader /; + __PACKAGE__->_loader_invoked(0); + __PACKAGE__->naming('current'); + __PACKAGE__->connect($make_dbictest_db::dsn, { loader_class => shift }); + }, + make_schema_at => sub { + use DBIx::Class::Schema::Loader qw/ make_schema_at /; + make_schema_at( + 'DBICTeset::Schema::3', + { naming => 'current' }, + [ $make_dbictest_db::dsn, { loader_class => shift } ] + ); + } +); -plan tests => 2; +# one test per invocation/class combo +plan tests => keys(%invocations) * keys(%loader_class); -my $schema = DBICTest::Schema->connect($make_dbictest_db::dsn); -isa_ok($schema->storage, 'DBIx::Class::Storage::DBI::SQLite'); -isa_ok($schema->_loader, 'TestLoaderSubclass'); +while (my ($style,$subref) = each %invocations) { + while (my ($arg, $class) = each %loader_class) { + my $schema = $subref->($arg); + $schema = $schema->clone unless ref $schema; + isa_ok($schema->loader, $class, "$style($arg)"); + } +}