fix new rel tests for older DBIC
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / lib / dbixcsl_firebird_extra_tests.pm
1 package dbixcsl_firebird_extra_tests;
2
3 use strict;
4 use warnings;
5 use Test::More;
6 use Test::Exception;
7
8 sub extra { +{
9     pre_drop_ddl => [
10         q{DROP TRIGGER "Firebird_Loader_Test1_BI"},
11         q{DROP GENERATOR "Gen_Firebird_Loader_Test1_Id"},
12     ],
13     drop   => [
14         q{"Firebird_Loader_Test1"}
15     ],
16     count  => 6,
17     run    => sub {
18         my ($schema, $monikers, $classes) = @_;
19
20         my $dbh = $schema->storage->dbh;
21
22 # create a mixed case table
23         $dbh->do($_) for (
24 q{
25     CREATE TABLE "Firebird_Loader_Test1" (
26         "Id" INTEGER NOT NULL PRIMARY KEY,
27         "Foo" INTEGER DEFAULT 42
28     )
29 },
30 q{
31     CREATE GENERATOR "Gen_Firebird_Loader_Test1_Id"
32 },
33 q{
34     CREATE TRIGGER "Firebird_Loader_Test1_BI" for "Firebird_Loader_Test1"
35     ACTIVE BEFORE INSERT POSITION 0
36     AS
37     BEGIN
38      IF (NEW."Id" IS NULL) THEN
39       NEW."Id" = GEN_ID("Gen_Firebird_Loader_Test1_Id",1);
40     END
41 },
42         );
43
44         $schema->_loader->{unquoted_ddl} = 0;
45         $schema->_loader->_setup;
46         {
47             local $SIG{__WARN__} = sub {};
48             $schema->rescan;
49         }
50
51         ok ((my $rsrc = eval { $schema->resultset('FirebirdLoaderTest1')->result_source }),
52             'got rsrc for mixed case table');
53
54         ok ((my $col_info = eval { $rsrc->column_info('Id') }),
55             'got column_info for column Id');
56
57         is $col_info->{accessor}, 'id', 'column Id has lowercase accessor "id"';
58
59         is $col_info->{is_auto_increment}, 1, 'is_auto_increment detected for mixed case trigger';
60
61         is $col_info->{sequence}, 'Gen_Firebird_Loader_Test1_Id', 'correct mixed case sequence name';
62
63         is eval { $rsrc->column_info('Foo')->{default_value} }, 42, 'default_value detected for mixed case column';
64     },
65 }}
66
67 1;