normalize accessor names for CamelCase columns in v7 mode
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 12pg_common.t
CommitLineData
a78e3fed 1use strict;
c2849787 2use lib qw(t/lib);
fbd83464 3use dbixcsl_common_tests;
fdd8ff16 4use Test::More;
9065de34 5use File::Slurp 'slurp';
a78e3fed 6
9e978a19 7my $dsn = $ENV{DBICTEST_PG_DSN} || '';
8my $user = $ENV{DBICTEST_PG_USER} || '';
9my $password = $ENV{DBICTEST_PG_PASS} || '';
a78e3fed 10
fbd83464 11my $tester = dbixcsl_common_tests->new(
a78e3fed 12 vendor => 'Pg',
13 auto_inc_pk => 'SERIAL NOT NULL PRIMARY KEY',
9e978a19 14 dsn => $dsn,
a78e3fed 15 user => $user,
16 password => $password,
ee07e280 17 data_types => {
5163dc4a 18 bigint => { data_type => 'bigint' },
19 int8 => { data_type => 'bigint' },
20 bigserial => { data_type => 'bigint', is_auto_increment => 1 },
21 serial8 => { data_type => 'bigint', is_auto_increment => 1 },
22 bit => { data_type => 'bit' },
23 boolean => { data_type => 'boolean' },
24 bool => { data_type => 'boolean' },
25 box => { data_type => 'box' },
26 bytea => { data_type => 'bytea' },
27 cidr => { data_type => 'cidr' },
28 circle => { data_type => 'circle' },
29 date => { data_type => 'date' },
df956aad 30 'double precision' => { data_type => 'double precision' },
5163dc4a 31 float8 => { data_type => 'double precision' },
32 inet => { data_type => 'inet' },
33 integer => { data_type => 'integer' },
34 int => { data_type => 'integer' },
35 int4 => { data_type => 'integer' },
36 interval => { data_type => 'interval' },
ee07e280 37 'interval(2)' => { size => 2, data_type => 'interval' },
5163dc4a 38 line => { data_type => 'line' },
39 lseg => { data_type => 'lseg' },
40 macaddr => { data_type => 'macaddr' },
41 money => { data_type => 'money' },
42 path => { data_type => 'path' },
43 point => { data_type => 'point' },
44 polygon => { data_type => 'polygon' },
45 real => { data_type => 'real' },
46 float4 => { data_type => 'real' },
47 smallint => { data_type => 'smallint' },
48 int2 => { data_type => 'smallint' },
49 serial => { data_type => 'integer', is_auto_increment => 1 },
50 serial4 => { data_type => 'integer', is_auto_increment => 1 },
51 text => { data_type => 'text' },
52 time => { data_type => 'time without time zone' },
9065de34 53 'time(2)' => { size => 2, data_type => 'time without time zone' },
df956aad 54 'time without time zone' => { data_type => 'time without time zone' },
ee07e280 55 'time(2) without time zone' => { size => 2, data_type => 'time without time zone' },
df956aad 56 'time with time zone' => { data_type => 'time with time zone' },
ee07e280 57 'time(2) with time zone' => { size => 2, data_type => 'time with time zone' },
5163dc4a 58 timestamp => { data_type => 'timestamp without time zone' },
8e64075f 59 'timestamp default current_timestamp'
6e566cc4 60 => { data_type => 'timestamp without time zone', default_value => \'current_timestamp' },
9065de34 61 'timestamp(2)' => { size => 2, data_type => 'timestamp without time zone' },
df956aad 62 'timestamp without time zone' => { data_type => 'timestamp without time zone' },
ee07e280 63 'timestamp(2) without time zone' => { size => 2, data_type => 'timestamp without time zone' },
df956aad 64 'timestamp with time zone' => { data_type => 'timestamp with time zone' },
ee07e280 65 'timestamp(2) with time zone' => { size => 2, data_type => 'timestamp with time zone' },
66 'bit varying(2)' => { size => 2, data_type => 'bit varying' },
9065de34 67 'varbit(2)' => { size => 2, data_type => 'bit varying' },
ee07e280 68 'character varying(2)' => { size => 2, data_type => 'character varying' },
9065de34 69 'varchar(2)' => { size => 2, data_type => 'character varying' },
ee07e280 70 'character(2)' => { size => 2, data_type => 'character' },
9065de34 71 'char(2)' => { size => 2, data_type => 'character' },
ee07e280 72 'numeric(6, 3)' => { size => [6,3], data_type => 'numeric' },
9065de34 73 'decimal(6, 3)' => { size => [6,3], data_type => 'numeric' },
5163dc4a 74 numeric => { data_type => 'numeric' },
75 decimal => { data_type => 'numeric' },
df956aad 76 'float(24)' => { data_type => 'real' },
9990e58f 77 'float(25)' => { data_type => 'double precision' },
df956aad 78 'float(53)' => { data_type => 'double precision' },
5163dc4a 79 float => { data_type => 'double precision' },
ee07e280 80 },
fdd8ff16 81 extra => {
82 create => [
83 q{
84 CREATE TABLE pg_loader_test1 (
85 id SERIAL NOT NULL PRIMARY KEY,
86 value VARCHAR(100)
87 )
88 },
89 q{
90 COMMENT ON TABLE pg_loader_test1 IS 'The Table'
91 },
92 q{
93 COMMENT ON COLUMN pg_loader_test1.value IS 'The Column'
94 },
4b9fb838 95 q{
96 CREATE TABLE pg_loader_test2 (
97 id SERIAL NOT NULL PRIMARY KEY,
98 value VARCHAR(100)
99 )
100 },
101 q{
102 COMMENT ON TABLE pg_loader_test2 IS 'very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long comment'
103 },
fdd8ff16 104 ],
9065de34 105 drop => [ qw/ pg_loader_test1 pg_loader_test2 / ],
106 count => 3,
fdd8ff16 107 run => sub {
108 my ($schema, $monikers, $classes) = @_;
109
110 my $class = $classes->{pg_loader_test1};
111 my $filename = $schema->_loader->_get_dump_filename($class);
112
9065de34 113 my $code = slurp $filename;
fdd8ff16 114
115 like $code, qr/^=head1 NAME\n\n^$class - The Table\n\n^=cut\n/m,
116 'table comment';
117
79a00530 118 like $code, qr/^=head2 value\n\n(.+:.+\n)+\nThe Column\n\n/m,
119 'column comment and attrs';
baff904e 120
4b9fb838 121 $class = $classes->{pg_loader_test2};
122 $filename = $schema->_loader->_get_dump_filename($class);
123
9065de34 124 $code = slurp $filename;
4b9fb838 125
126 like $code, qr/^=head1 NAME\n\n^$class\n\n=head1 DESCRIPTION\n\n^very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long comment\n\n^=cut\n/m,
127 'long table comment is in DESCRIPTION';
fdd8ff16 128 },
129 },
a78e3fed 130);
131
9e978a19 132if( !$dsn || !$user ) {
133 $tester->skip_tests('You need to set the DBICTEST_PG_DSN, _USER, and _PASS environment variables');
a78e3fed 134}
135else {
136 $tester->run_tests();
137}
8e64075f 138# vim:et sw=4 sts=4 tw=0: