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