Alzabo
view release on metacpan or search on metacpan
t/20-rev-engineer-pg-now.t view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use File::Spec;
use lib '.', File::Spec->catdir( File::Spec->curdir, 't', 'lib' );
use Alzabo::Test::Utils;
use Test::More;
use Alzabo::Create::Schema;
my $config = Alzabo::Test::Utils->test_config_for('pg');
unless ( keys %$config )
{
plan skip_all => 'no Postgres test config provided';
exit;
}
{
package FakeSchema;
sub new { return bless { name => $_[1] }, $_[0] }
sub db_schema_name { $_[0]->{name} }
}
require DBD::Pg;
require Alzabo::Driver::PostgreSQL;
plan tests => 6;
Alzabo::Test::Utils->remove_schema('pg');
my $schema_name = delete $config->{schema_name};
delete $config->{rdbms};
{
# This seems to help avoid those damn 'source database "template1"
# is being accessed by other users' errors. Freaking Postgres!
sleep 1;
# We create a couple of tables *without* using Alzabo, then see
# whether it can reverse-engineer them and preserve foreign key
# relationships.
my $driver = Alzabo::Driver->new( rdbms => 'PostgreSQL',
schema => FakeSchema->new('template1'),
);
$driver->connect( %$config );
my $dbh = $driver->handle;
$dbh->do("CREATE DATABASE $schema_name");
$dbh->disconnect;
ok( 1, 'drop and create database' );
$driver = Alzabo::Driver->new( rdbms => 'PostgreSQL',
schema => FakeSchema->new($schema_name),
);
$driver->connect( %$config );
$dbh = $driver->handle;
( run in 2.687 seconds using v1.01-cache-2.11-cpan-98e64b0badf )