DBIx-TempDB

 view release on metacpan or  search on metacpan

lib/DBIx/TempDB/Util.pm  view on Meta::CPAN

  $url = URI::db->new($url);
  $url->dbname($database_name);
  $url->query(undef);
  $dsn      = $url->dbi_dsn;
  @userinfo = ($url->user, $url->password);

  $opt{AutoCommit}          //= 1;
  $opt{AutoInactiveDestroy} //= 1;
  $opt{PrintError}          //= 0;
  $opt{RaiseError}          //= 1;
  $opt{mysql_enable_utf8}   //= 1;

  return $dsn, @userinfo[0, 1], \%opt;
}

sub _dsn_for_pg {
  my ($url, $database_name) = @_;
  my %opt = %{$url->query_form_hash};
  my ($dsn, @userinfo);

  $url = URI::db->new($url);

t/dsn-for.t  view on Meta::CPAN

    'postgres', undef, {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1}
  ],
  'postgresql://pg:s3cret@localhost?AutoInactiveDestroy=0',
  [
    'dbi:Pg:host=localhost', 'pg', 's3cret',
    {AutoCommit => 1, AutoInactiveDestroy => 0, PrintError => 0, RaiseError => 1}
  ],
  'mysql://root@127.0.0.1',
  [
    'dbi:mysql:host=127.0.0.1', 'root', undef,
    {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
  ],
  'mysql://u1:s3cret@localhost?PrintError=1',
  [
    'dbi:mysql:host=localhost', 'u1', 's3cret',
    {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 1, RaiseError => 1, mysql_enable_utf8 => 1}
  ],
  'mysql://x:y@example.com:2345/aiaiai',
  [
    'dbi:mysql:host=example.com;port=2345;database=aiaiai',
    'x', 'y', {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
  ],
);

while (@tests) {
  my $url = shift @tests;
  my $exp = shift @tests;

  is_deeply [dsn_for($url)], $exp, $url;
  is_deeply [dsn_for(URI::db->new($url))], $exp, $url;
}

t/mysql-offline.t  view on Meta::CPAN

use DBIx::TempDB;

my $tmpdb = DBIx::TempDB->new('mysql://example.com', auto_create => 0, database_name => 'foo');

is $tmpdb->url, 'mysql://example.com', 'url';

is_deeply(
  [$tmpdb->dsn],
  [
    'dbi:mysql:host=example.com;database=foo',
    undef, undef, {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
  ],
  'dsn for foo'
);

$tmpdb = DBIx::TempDB->new('mysql://u:p@127.0.0.1:1234?AutoCommit=0', auto_create => 0, database_name => 'yikes');
is_deeply(
  [$tmpdb->dsn],
  [
    'dbi:mysql:host=127.0.0.1;port=1234;database=yikes',
    'u', 'p', {AutoCommit => 0, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
  ],
  'dsn for yikes'
);

done_testing;



( run in 0.263 second using v1.01-cache-2.11-cpan-00829025b61 )