Commit | Line | Data |
a78e3fed |
1 | use strict; |
8763ffda |
2 | use Test::More; |
c2849787 |
3 | use lib qw(t/lib); |
fbd83464 |
4 | use dbixcsl_common_tests; |
a78e3fed |
5 | |
6 | eval { require DBD::SQLite }; |
7 | my $class = $@ ? 'SQLite2' : 'SQLite'; |
8 | |
8763ffda |
9 | my $tester = dbixcsl_common_tests->new( |
10 | vendor => 'SQLite', |
11 | auto_inc_pk => 'INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT', |
12 | dsn => "dbi:$class:dbname=./t/sqlite_test", |
13 | user => '', |
14 | password => '', |
15 | extra => { |
16 | create => [ |
17 | # 'sqlite_' is reserved, so we use 'extra_' |
18 | q{ |
19 | CREATE TABLE "extra_loader_test1" ( |
20 | "id" NOT NULL PRIMARY KEY, |
0fa48bf5 |
21 | "value" VARCHAR(100) NOT NULL |
8763ffda |
22 | ) |
68d650df |
23 | }, |
24 | q{ |
25 | CREATE TABLE extra_loader_test2 ( |
26 | event_id INTEGER PRIMARY KEY |
27 | ) |
28 | }, |
29 | q{ |
30 | CREATE TABLE extra_loader_test3 ( |
31 | person_id INTEGER PRIMARY KEY |
32 | ) |
33 | }, |
34 | # Wordy, newline-heavy SQL to stress the regexes |
35 | q{ |
36 | CREATE TABLE extra_loader_test4 ( |
37 | event_id INTEGER NOT NULL |
38 | CONSTRAINT fk_event_id |
39 | REFERENCES extra_loader_test2(event_id), |
40 | person_id INTEGER NOT NULL |
41 | CONSTRAINT fk_person_id |
42 | REFERENCES extra_loader_test3 (person_id), |
43 | PRIMARY KEY (event_id, person_id) |
44 | ) |
45 | }, |
8763ffda |
46 | ], |
68d650df |
47 | drop => [ qw/extra_loader_test1 extra_loader_test2 extra_loader_test3 extra_loader_test4 / ], |
3b134b29 |
48 | count => 8, |
8763ffda |
49 | run => sub { |
50 | my ($schema, $monikers, $classes) = @_; |
a78e3fed |
51 | |
8763ffda |
52 | ok ((my $rs = $schema->resultset($monikers->{extra_loader_test1})), |
53 | 'resultset for quoted table'); |
54 | |
0fa48bf5 |
55 | ok ((my $source = $rs->result_source), 'source'); |
56 | |
57 | is_deeply [ $source->columns ], [ qw/id value/ ], |
8763ffda |
58 | 'retrieved quoted column names from quoted table'; |
68d650df |
59 | |
3b134b29 |
60 | ok ((exists $source->column_info('value')->{is_nullable}), |
61 | 'is_nullable exists'); |
62 | |
0fa48bf5 |
63 | is $source->column_info('value')->{is_nullable}, 0, |
3b134b29 |
64 | 'is_nullable is set correctly'; |
0fa48bf5 |
65 | |
66 | ok (($source = $schema->source($monikers->{extra_loader_test4})), |
68d650df |
67 | 'verbose table'); |
68 | |
69 | is_deeply [ $source->primary_columns ], [ qw/event_id person_id/ ], |
70 | 'composite primary key'; |
71 | |
68d650df |
72 | is ($source->relationships, 2, |
73 | '2 foreign key constraints found'); |
74 | |
8763ffda |
75 | }, |
76 | }, |
77 | ); |
78 | |
79 | $tester->run_tests(); |
a78e3fed |
80 | |
81 | END { |
82 | unlink './t/sqlite_test'; |
83 | } |