Commit | Line | Data |
e7262300 |
1 | use strict; |
2 | use lib qw(t/lib); |
3 | use dbixcsl_common_tests; |
6b0e47fc |
4 | use Test::More; |
5 | use Test::Exception; |
e7262300 |
6 | |
7 | my $dsn = $ENV{DBICTEST_ORA_DSN} || ''; |
8 | my $user = $ENV{DBICTEST_ORA_USER} || ''; |
9 | my $password = $ENV{DBICTEST_ORA_PASS} || ''; |
10 | |
11 | my $tester = dbixcsl_common_tests->new( |
12 | vendor => 'Oracle', |
c1ac681d |
13 | auto_inc_pk => 'INTEGER NOT NULL PRIMARY KEY', |
14 | auto_inc_cb => sub { |
15 | my ($table, $col) = @_; |
16 | return ( |
17 | qq{ CREATE SEQUENCE ${table}_${col}_seq START WITH 1 INCREMENT BY 1}, |
18 | qq{ |
19 | CREATE OR REPLACE TRIGGER ${table}_${col}_trigger |
20 | BEFORE INSERT ON ${table} |
21 | FOR EACH ROW |
22 | BEGIN |
23 | SELECT ${table}_${col}_seq.nextval INTO :NEW.${col} FROM dual; |
24 | END; |
25 | } |
26 | ); |
27 | }, |
28 | auto_inc_drop_cb => sub { |
29 | my ($table, $col) = @_; |
30 | return qq{ DROP SEQUENCE ${table}_${col}_seq }; |
31 | }, |
e7262300 |
32 | dsn => $dsn, |
33 | user => $user, |
34 | password => $password, |
6b0e47fc |
35 | extra => { |
36 | create => [ |
37 | q{ |
38 | CREATE TABLE oracle_loader_test1 ( |
39 | id INTEGER PRIMARY KEY, |
40 | a_varchar VARCHAR2(100) DEFAULT 'foo', |
41 | an_int INTEGER DEFAULT 42, |
42 | a_double DOUBLE PRECISION DEFAULT 10.555, |
43 | a_date DATE DEFAULT sysdate |
44 | ) |
45 | }, |
46 | ], |
47 | drop => [ qw/ oracle_loader_test1 / ], |
48 | count => 5, |
49 | run => sub { |
50 | my ($schema, $monikers, $classes) = @_; |
51 | |
52 | my $rsrc = $schema->resultset($monikers->{oracle_loader_test1}) |
53 | ->result_source; |
54 | |
55 | is $rsrc->column_info('a_varchar')->{default_value}, |
56 | 'foo', |
57 | 'constant character default'; |
58 | |
59 | is $rsrc->column_info('an_int')->{default_value}, |
60 | 42, |
61 | 'constant integer default'; |
62 | |
63 | is $rsrc->column_info('a_double')->{default_value}, |
64 | 10.555, |
65 | 'constant numeric default'; |
66 | |
67 | my $function_default = |
68 | $rsrc->column_info('a_date')->{default_value}; |
69 | |
70 | ok ((ref $function_default eq 'SCALAR'), |
71 | 'default_value for function default is a scalar ref') |
72 | or diag "default_value is: ", $function_default |
73 | ; |
74 | |
75 | eval { is $$function_default, |
76 | 'sysdate', |
77 | 'default_value for function default is correct' }; |
78 | }, |
79 | }, |
e7262300 |
80 | ); |
81 | |
82 | if( !$dsn || !$user ) { |
83 | $tester->skip_tests('You need to set the DBICTEST_ORA_DSN, _USER, and _PASS environment variables'); |
84 | } |
85 | else { |
86 | $tester->run_tests(); |
87 | } |