X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F47postgres-producer.t;h=6201091dc45bc583b3484cf88e4fe8d1c98e85d7;hb=f38b7673315088c4b699fc1c6c823c441c5387a9;hp=9a5d2e954e5cda620ed96f2571fcfeb8a6473b65;hpb=3406fd5b1839f1e6d165ae39b86e08effc80ac2c;p=dbsrgits%2FSQL-Translator.git diff --git a/t/47postgres-producer.t b/t/47postgres-producer.t index 9a5d2e9..6201091 100644 --- a/t/47postgres-producer.t +++ b/t/47postgres-producer.t @@ -14,7 +14,7 @@ use FindBin qw/$Bin/; #============================================================================= BEGIN { - maybe_plan(13, + maybe_plan(17, 'SQL::Translator::Producer::PostgreSQL', 'Test::Differences', ) @@ -104,6 +104,59 @@ my $field5_sql = SQL::Translator::Producer::PostgreSQL::create_field($field5,{ p is($field5_sql, 'enum_field mytable_enum_field_type NOT NULL', 'Create real enum field works'); + + + +my $field6 = SQL::Translator::Schema::Field->new( + name => 'character', + table => $table, + data_type => 'character', + size => '123', + default_value => 'foobar', + is_auto_increment => 0, + is_nullable => 0, + is_foreign_key => 0, + is_unique => 0); + +my $field7 = SQL::Translator::Schema::Field->new( + name => 'character', + table => $table, + data_type => 'character', + size => '123', + default_value => undef, + is_auto_increment => 0, + is_nullable => 0, + is_foreign_key => 0, + is_unique => 0); + +$alter_field = SQL::Translator::Producer::PostgreSQL::alter_field($field6, + $field7); + +is($alter_field, q(ALTER TABLE mytable ALTER COLUMN character DROP DEFAULT), 'DROP DEFAULT'); + +$field7->default_value(q(foo'bar')); + +$alter_field = SQL::Translator::Producer::PostgreSQL::alter_field($field6, + $field7); + +is($alter_field, q(ALTER TABLE mytable ALTER COLUMN character SET DEFAULT 'foo''bar'''), 'DEFAULT with escaping'); + +$field7->default_value(\q(foobar)); + +$alter_field = SQL::Translator::Producer::PostgreSQL::alter_field($field6, + $field7); + +is($alter_field, q(ALTER TABLE mytable ALTER COLUMN character SET DEFAULT foobar), 'DEFAULT unescaped if scalarref'); + +$field7->is_nullable(1); +$field7->default_value(q(foobar)); + +$alter_field = SQL::Translator::Producer::PostgreSQL::alter_field($field6, + $field7); + +is($alter_field, q(ALTER TABLE mytable ALTER COLUMN character DROP NOT NULL), 'DROP NOT NULL'); + + { # let's test default values! -- rjbs, 2008-09-30 my %field = (