Amon2-DBI

 view release on metacpan or  search on metacpan

t/01_simple.t  view on Meta::CPAN


eval {
    Amon2::DBI->connect('dbi:unknown:', '', '');
};
ok $@, "dies with unknown driver, automatically.";

my $dbh = Amon2::DBI->connect('dbi:SQLite::memory:', '', '');
$dbh->do(q{CREATE TABLE foo (e)});
$dbh->insert('foo', {e => 3});
$dbh->do_i('INSERT INTO foo ', {e => 4});
is join(',', map { @$_ } @{$dbh->selectall_arrayref('SELECT * FROM foo ORDER BY e')}), '3,4';

subtest 'utf8' => sub {
    use utf8;
    $dbh->do(q{CREATE TABLE bar (x)});
    $dbh->insert(bar => { x => "こんにちは" });
    my ($x) = $dbh->selectrow_array(q{SELECT x FROM bar});
    is $x, "こんにちは";
};

eval {
    $dbh->insert('bar', {e => 3});
}; note $@;
ok $@, "Dies with unknown table name automatically.";
like $@, qr/failed/;

$dbh->disconnect();

t/03_callbacks.t  view on Meta::CPAN

is($call_execute,0);

$dbh->insert('foo', {e => 3});
is($call_prepare,1);
is($call_execute,1);

$dbh->do_i('INSERT INTO foo ', {e => 4});
is($call_prepare,2);
is($call_execute,2);

is join(',', map { @$_ } @{$dbh->selectall_arrayref('SELECT * FROM foo ORDER BY e')}), '3,4';
is($call_prepare,3);
is($call_execute,2);
#is($call_execute,4); execute is not called by selectall_arrayref 

done_testing;

t/05_mysql.t  view on Meta::CPAN

my $mysqld = Test::mysqld->new(
    my_cnf => {
        'skip-networking' => ''
    }
) or plan skip_all => $Test::mysqld::errstr;

my $dbh = Amon2::DBI->connect($mysqld->dsn());
$dbh->do(q{CREATE TABLE foo (e int unsigned not null)});
$dbh->insert('foo', {e => 3});
$dbh->do_i('INSERT INTO foo ', {e => 4});
is join(',', map { @$_ } @{$dbh->selectall_arrayref('SELECT * FROM foo ORDER BY e')}), '3,4';

subtest 'utf8' => sub {
    use utf8;
    $dbh->do(q{CREATE TABLE bar (x varchar(255)) DEFAULT CHARACTER SET utf8});
    $dbh->insert(bar => { x => "こんにちは" });
    my ($x) = $dbh->selectrow_array(q{SELECT x FROM bar});
    is $x, "こんにちは";
};

eval {
    $dbh->insert('bar', {e => 3});
}; note $@;
ok $@, "Dies with unknown table name automatically.";
like $@, qr/failed/;

eval {

t/06_pg.t  view on Meta::CPAN

use Test::Requires 'DBD::Pg', 'DBI', 'Test::postgresql';

my $pg = eval { Test::postgresql->new(
    initdb_args => $Test::postgresql::Defaults{initdb_args} . ' -E UTF8',
) } or plan skip_all => $Test::postgresql::errstr;

my $dbh = Amon2::DBI->connect($pg->dsn);
$dbh->do(q{CREATE TABLE foo (e int not null)});
$dbh->insert('foo', {e => 3});
$dbh->do_i('INSERT INTO foo ', {e => 4});
is join(',', map { @$_ } @{$dbh->selectall_arrayref('SELECT * FROM foo ORDER BY e')}), '3,4';

subtest 'utf8' => sub {
    use utf8;
    $dbh->do(q{CREATE TABLE bar (x varchar(255))});
    $dbh->insert(bar => { x => "こんにちは" });
    my ($x) = $dbh->selectrow_array(q{SELECT x FROM bar});
    is $x, "こんにちは";
};

eval {
    $dbh->insert('bar', {e => 3});
}; note $@;
ok $@, "Dies with unknown table name automatically.";
like $@, qr/Amon2::DBI 's Exception/;

eval {

t/07_nested_transaction.t  view on Meta::CPAN

        $dbh->do(q{INSERT INTO foo (id) VALUES (2)});
        {
            my $txn2 = $dbh->txn_scope();
            $dbh->do(q{INSERT INTO foo (id) VALUES (3)});
            $txn2->rollback;
        }
        eval { $txn1->commit };
        ok $@;
        like $@, qr/tried to commit but already rollbacked in nested transaction/;
    }
    my $cnt = $dbh->selectrow_array(q{SELECT COUNT(*) FROM foo});
    is($cnt, 1);
};

subtest 'y' => sub {
    my $dbh = Amon2::DBI->connect('dbi:SQLite::memory:', '', '', {
        RaiseError => 1,
        PrintError => 0,
        AutoCommit => 1,
    });
    $dbh->do(q{CREATE TABLE foo (id INT UNSGINED)});

t/07_nested_transaction.t  view on Meta::CPAN

    {
        my $txn1 = $dbh->txn_scope();
        $dbh->do(q{INSERT INTO foo (id) VALUES (2)});
        {
            my $txn2 = $dbh->txn_scope();
            $dbh->do(q{INSERT INTO foo (id) VALUES (3)});
            $txn2->commit;
        }
        $txn1->rollback;
    }
    my $cnt = $dbh->selectrow_array(q{SELECT COUNT(*) FROM foo});
    is($cnt, 1);
};

cmp_ok($COUNTER, '>=', 2);

done_testing;



( run in 0.632 second using v1.01-cache-2.11-cpan-49f99fa48dc )