Alzabo

 view release on metacpan or  search on metacpan

t/lib/Alzabo/Test/Utils.pm  view on Meta::CPAN

    my $class = shift;

    my %c = $class->test_config;

    return sort keys %c;
}

sub rdbms_count
{
    my $class = shift;

    return scalar $class->rdbms_names;
}

sub test_config
{
    my $build = Module::Build->current;

    my $tests = $build->notes('test_config');

    return map { $_->{rdbms} => $_ } @$tests;
}

sub mysql_test_config
{
    my $class = shift;

    my %t = $class->test_config;

    return $t{mysql};
}

sub pg_test_config
{
    my $class = shift;

    my %t = $class->test_config;

    return $t{pg};
}

sub test_config_for
{
    my $class = shift;
    my $rdbms = shift;

    my $meth = "${rdbms}_test_config";

    return $class->$meth();
}

sub connect_params_for
{
    my $class = shift;

    my $config = $class->test_config_for( shift );

    return ( map { defined $config->{$_}
                   ? ( $_ => $config->{$_} )
                   : () }
             qw( user password host port )
           );
}

sub cleanup
{
    my $class = shift;

    $class->remove_schema_dir;

    $class->remove_all_schemas;
}

sub remove_schema_dir
{
    my $class = shift;

    my $dir = $class->_schema_dir;

    Test::More::diag( "Removing test schema directory: $dir" );

    File::Path::rmtree( $dir, $Test::Harness::verbose, 0 );
}

sub remove_all_schemas
{
    my $class = shift;

    $class->remove_schema($_) foreach 'mysql', 'pg';
}

sub remove_schema
{
    my $class = shift;
    my $rdbms = shift;

    my $meth = "remove_${rdbms}_schema";

    $class->$meth();
}

sub remove_mysql_schema
{
    my $class = shift;

    my $config = $class->mysql_test_config();

    return unless keys %$config;

    Test::More::diag( "Removing MySQL database $config->{schema_name}" );

    my $s = $class->_load_or_create( name => $config->{schema_name},
                                     rdbms => 'MySQL' );

    delete @{ $config }{ 'schema_name', 'rdbms' };

    eval { $s->drop( %$config ) };
    eval { $s->drop( %$config, schema_name => $s->name . '_2' ) };

    $s->delete if $s->is_saved;
}



( run in 0.477 second using v1.01-cache-2.11-cpan-5735350b133 )