Added support for proper enums under pg (as of 8.3), with pg version check, and defer...
[dbsrgits/SQL-Translator.git] / t / 47postgres-producer.t
index c96b5e2..d52136f 100644 (file)
@@ -14,7 +14,7 @@ use FindBin qw/$Bin/;
 #=============================================================================
 
 BEGIN {
-    maybe_plan(4,
+    maybe_plan(7,
         'SQL::Translator::Producer::PostgreSQL',
         'Test::Differences',
     )
@@ -64,4 +64,43 @@ is($add_field, 'ALTER TABLE mytable ADD COLUMN field3 character varying(10);', '
 my $drop_field = SQL::Translator::Producer::PostgreSQL::drop_field($field2);
 is($drop_field, 'ALTER TABLE mytable DROP COLUMN myfield;', 'Drop field works');
 
+my $field3 = SQL::Translator::Schema::Field->new( name      => 'time_field',
+                                                  table => $table,
+                                                  data_type => 'TIME',
+                                                  default_value => undef,
+                                                  is_auto_increment => 0,
+                                                  is_nullable => 0,
+                                                  is_foreign_key => 0,
+                                                  is_unique => 0 );
+
+my $field3_sql = SQL::Translator::Producer::PostgreSQL::create_field($field3);
+
+is($field3_sql, 'time_field time NOT NULL', 'Create time field works');
+
+my $field4 = SQL::Translator::Schema::Field->new( name      => 'bytea_field',
+                                                  table => $table,
+                                                  data_type => 'bytea',
+                                                  size => '16777215',
+                                                  default_value => undef,
+                                                  is_auto_increment => 0,
+                                                  is_nullable => 0,
+                                                  is_foreign_key => 0,
+                                                  is_unique => 0 );
+
+my $field4_sql = SQL::Translator::Producer::PostgreSQL::create_field($field4);
+
+is($field4_sql, 'bytea_field bytea NOT NULL', 'Create bytea field works');
+
+my $field5 = SQL::Translator::Schema::Field->new( name => 'enum_field',
+                                                   table => $table,
+                                                   data_type => 'enum',
+                                                   extra => { list => [ 'Foo', 'Bar' ] },
+                                                   is_auto_increment => 0,
+                                                   is_nullable => 0,
+                                                   is_foreign_key => 0,
+                                                   is_unique => 0 );
+
+my $field5_sql = SQL::Translator::Producer::PostgreSQL::create_field($field5,{ postgres_version => 8.3 });
+
+is($field5_sql, 'enum_field mytable_enum_field_type NOT NULL', 'Create real enum field works');