Fix view ordering by requiring ddo declaration in result class
[dbsrgits/DBIx-Class-ResultSource-MultipleTableInheritance.git] / t / 02view_def.t
index 35e0bd7..3017243 100644 (file)
@@ -4,26 +4,51 @@ use lib 't/lib';
 use File::Temp;
 use Test::More qw(no_plan);
 use Test::Exception;
-use Devel::Dwarn;
+use LoadTest;
 
 BEGIN {
-    use_ok 'MTITest';
-    $ENV{DBIC_TRACE} = 1;
+    $ENV{DBIC_TRACE} = 0;
 }
 
-dies_ok { MTITest->source('Foo')->view_definition }
-"Can't generate view def without connected schema";
+my ( $dsn, $user, $pass )
+    = @ENV{ map {"DBICTEST_PG_${_}"} qw/DSN USER PASS/ };
+
+plan skip_all => <<'EOM' unless $dsn && $user;
+Set $ENV{DBICTEST_PG_DSN}, _USER and _PASS to run this test
+( NOTE: This test drops and creates some tables.')
+EOM
 
-#my $schema = MTITest->connect('dbi:SQLite::memory:');
+dies_ok { LoadTest->source('Foo')->view_definition }
+"Can't generate view def without connected schema";
 
-my $schema = MTITest->connect( 'dbi:Pg:dbname=mti', 'postgres', '' );
-diag(DwarnS $schema);
+my $schema = LoadTest->connect( $dsn, $user, $pass );
+$schema->storage->ensure_connected;
+$schema->storage->dbh->{Warn} = 0;
 
-#diag("MTITest view definition: ", $schema->resultset('Bar')->result_source->view_definition);
 my $dir = "t/sql";    # tempdir(CLEANUP => 0);
 
-$schema->create_ddl_dir( ['PostgreSQL'], 0.1, $dir );
-$schema->deploy( { add_drop_table => 1, add_drop_view => 1 } );
+lives_ok { $schema->create_ddl_dir( ['PostgreSQL'], 0.1, $dir ) }
+"It's OK to create_ddl_dir";
+lives_ok {
+    $schema->deploy( { add_drop_table => 1, add_drop_view => 1, } );
+}
+"It's also OK to deploy the schema";
+
+isa_ok(
+    $schema->source('Bar'),
+    'DBIx::Class::ResultSource::View',
+    "My MTI class also"
+);
+
+my $sqlt_object = $schema->{sqlt};
+
+is_deeply(
+    [ map { $_->name } $sqlt_object->get_views ],
+    [   qw/
+            foo
+            bar
+            /
+    ],
+    "SQLT view order triumphantly matches our order."
+);
 
-#diag DwarnS $schema->source($_)->view_definition for qw(Foo Bar);
-#diag DwarnS $schema->source($_) for qw(Foo Bar);