Check truth of preserve_case not definedness
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 24loader_subclass.t
index 43de59b..2d3b595 100644 (file)
@@ -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)");
+    }
+}