Skip to content

Commit

Permalink
test to demonstrate Pg diff failure with rename_table+rename_field
Browse files Browse the repository at this point in the history
  • Loading branch information
SysPete committed Aug 23, 2014
1 parent 8162bba commit 78c6262
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions t/postgresql-rename-table-and-field.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env perl

use strict;
use warnings;

use Test::More;
use Test::SQL::Translator;
use SQL::Translator;
use SQL::Translator::Diff;

maybe_plan(10, 'DBD::Pg', 'Test::PostgreSQL');

my ( $pgsql, $dbh , $ddl, $ret );

no warnings "once";
$pgsql = Test::PostgreSQL->new() or plan skip_all => $Test::PostgreSQL::errstr;
$dbh = DBI->connect($pgsql->dsn,'','', { RaiseError => 1 }) or plan skip_all => $DBI::errstr;
use warnings "once";

my $source_ddl = <<DDL;
CREATE TABLE foo (
pk SERIAL PRIMARY KEY,
bar VARCHAR(10)
);
DDL

ok( $ret = $dbh->do($source_ddl), "create table" );

ok( $ret = $dbh->do(q| INSERT INTO foo (bar) VALUES ('buzz') |), "insert data" );

cmp_ok( $ret, '==', 1, "one row inserted" );

my $target_ddl = <<DDL;
CREATE TABLE fluff (
pk SERIAL PRIMARY KEY,
biff VARCHAR(10)
);
DDL

my $source_sqlt = SQL::Translator->new(
no_comments => 1,
parser => 'SQL::Translator::Parser::PostgreSQL',
)->translate(\$source_ddl);

my $target_sqlt = SQL::Translator->new(
no_comments => 1,
parser => 'SQL::Translator::Parser::PostgreSQL',
)->translate(\$target_ddl);

my $table = $target_sqlt->get_table('fluff');
$table->extra( renamed_from => 'foo' );
my $field = $table->get_field('biff');
$field->extra( renamed_from => 'bar' );

my @diff = SQL::Translator::Diff->new({
output_db => 'PostgreSQL',
source_schema => $source_sqlt,
target_schema => $target_sqlt,
})->compute_differences->produce_diff_sql;

foreach my $line (@diff) {
$line =~ s/\n//g;
next if $line =~ /^--/;
ok( $dbh->do($line), "$line" );
}

ok ( $ret = $dbh->selectall_arrayref(q(SELECT biff FROM fluff), { Slice => {} }), "query DB for data" );

cmp_ok( scalar(@$ret), '==', 1, "Got 1 row");

cmp_ok( $ret->[0]->{biff}, 'eq', 'buzz', "col biff has value buzz" );

0 comments on commit 78c6262

Please sign in to comment.