test cleanups
[dbsrgits/DBIx-Class.git] / t / 99dbic_sqlt_parser.t
index 5bbd302..313d2a6 100644 (file)
@@ -2,29 +2,27 @@
 use strict;
 use warnings;
 use Test::More;
+use Test::Exception;
 use lib qw(t/lib);
 use DBICTest;
 
-
 BEGIN {
-    eval "use SQL::Translator 0.09003;";
-    if ($@) {
-        plan skip_all => 'needs SQL::Translator 0.09003 for testing';
-    }
+  require DBIx::Class::Storage::DBI;
+  plan skip_all =>
+      'Test needs SQL::Translator ' . DBIx::Class::Storage::DBI->_sqlt_minimum_version
+    if not DBIx::Class::Storage::DBI->_sqlt_version_ok;
 }
 
 my $schema = DBICTest->init_schema();
 # Dummy was yanked out by the sqlt hook test
 # CustomSql tests the horrific/deprecated ->name(\$sql) hack
-# YearXXXXCDs are views
+# YearXXXXCDs and NoViewDefinition are views
 #
 my @sources = grep
   { $_ !~ /^ (?: Dummy | CustomSql | Year\d{4}CDs ) $/x }
   $schema->sources
 ;
 
-plan tests => ( @sources * 3);
-
 { 
        my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { } } });
 
@@ -65,6 +63,29 @@ plan tests => ( @sources * 3);
        }
 }
 
+{ 
+    {
+        package # hide from PAUSE
+            DBICTest::Schema::NoViewDefinition;
+
+        use base qw/DBICTest::BaseResult/;
+
+        __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
+        __PACKAGE__->table('noviewdefinition');
+
+        1;
+    }
+
+    my $schema_invalid_view = $schema->clone;
+    $schema_invalid_view->register_class('NoViewDefinition', 'DBICTest::Schema::NoViewDefinition');
+
+    throws_ok { create_schema({ schema => $schema_invalid_view }) }
+        qr/view noviewdefinition is missing a view_definition/,
+        'parser detects views with a view_definition';
+}
+
+done_testing;
+
 sub create_schema {
        my $args = shift;
 
@@ -81,7 +102,7 @@ sub create_schema {
        my $sqlt = SQL::Translator->new( $sqltargs );
 
        $sqlt->parser('SQL::Translator::Parser::DBIx::Class');
-       return $sqlt->translate({ data => $schema }) or die $sqlt->error;
+       return $sqlt->translate({ data => $schema }) || die $sqlt->error;
 }
 
 sub get_table {