fix default_value introspection for Oracle
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 14ora_common.t
index 2cd05b5..f68a7e3 100644 (file)
@@ -1,6 +1,8 @@
 use strict;
 use lib qw(t/lib);
 use dbixcsl_common_tests;
+use Test::More;
+use Test::Exception;
 
 my $dsn      = $ENV{DBICTEST_ORA_DSN} || '';
 my $user     = $ENV{DBICTEST_ORA_USER} || '';
@@ -30,6 +32,51 @@ my $tester = dbixcsl_common_tests->new(
     dsn         => $dsn,
     user        => $user,
     password    => $password,
+    extra       => {
+        create => [
+            q{
+                CREATE TABLE oracle_loader_test1 (
+                    id INTEGER PRIMARY KEY,
+                    a_varchar VARCHAR2(100) DEFAULT 'foo',
+                    an_int INTEGER DEFAULT 42,
+                    a_double DOUBLE PRECISION DEFAULT 10.555,
+                    a_date DATE DEFAULT sysdate
+                )
+            },
+        ],
+        drop   => [ qw/ oracle_loader_test1 / ],
+        count  => 5,
+        run    => sub {
+            my ($schema, $monikers, $classes) = @_;
+
+            my $rsrc = $schema->resultset($monikers->{oracle_loader_test1})
+                ->result_source;
+
+            is $rsrc->column_info('a_varchar')->{default_value},
+                'foo',
+                'constant character default';
+
+            is $rsrc->column_info('an_int')->{default_value},
+                42,
+                'constant integer default';
+
+            is $rsrc->column_info('a_double')->{default_value},
+                10.555,
+                'constant numeric default';
+
+            my $function_default =
+                $rsrc->column_info('a_date')->{default_value};
+
+            ok ((ref $function_default eq 'SCALAR'),
+                'default_value for function default is a scalar ref')
+            or diag "default_value is: ", $function_default
+            ;
+
+            eval { is $$function_default,
+                'sysdate',
+                'default_value for function default is correct' };
+        },
+    },
 );
 
 if( !$dsn || !$user ) {