Acrux-DBI

 view release on metacpan or  search on metacpan

t/03-connect.t  view on Meta::CPAN

    #$res->finish;
    #note explain $rslt;

    #note explain $dbi->dbh->{Driver};
    #note $dbi->dbh->{Driver}{Name}

    #note explain $res->{'mysql_type'};
    #note explain $res->{'pg_type'};

};

subtest 'Create' => sub {
    my $res = $dbi->query('CREATE TABLE IF NOT EXISTS `names` (`id` INTEGER AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255))');
    ok($res, 'Create table') or diag $dbi->error;
    if (ref $res) {
        # Insert a few rows
        ok($dbi->query('INSERT INTO `names` (name) VALUES (?)', 'Bob'), 'Add Bob') or diag $dbi->error;
        ok($dbi->query('INSERT INTO `names` (name) VALUES (?)', 'Alice'), 'Add Alice') or diag $dbi->error;
    }
};

subtest 'Read' => sub {
    my $res = $dbi->query('SELECT `name` FROM `names` WHERE `name` = ?', 'Bob');
    ok($res, 'Read Bob') or diag $dbi->error;
    if (ref $res) {
        is($res->hash->{name}, 'Bob', 'Bob user found');
        #note explain $res->hash;
    }
};

subtest 'Update' => sub {
    my $res = $dbi->query('UPDATE `names` SET `name` = ? WHERE `name` = ?', 'Fred', 'Bob');
    ok($res, 'Update Bob to Fred') or diag $dbi->error;
    if (ref $res) {
        my $r2 = $dbi->query('SELECT `name` FROM `names` WHERE `name` = ?', 'Fred');
        ok($r2 && $r2->rows, 'Fred user found');
    }
};

subtest 'Delete' => sub {
    my $res = $dbi->query('DELETE FROM `names` WHERE `name` = ?', 'Alice');
    ok($res, 'Delete Alice') or diag $dbi->error;
    if (ref $res) {
        my $r2 = $dbi->query('SELECT `name` FROM `names` WHERE `name` = ?', 'Alice');
        ok($r2 && !$r2->rows, 'Alice user not found');
    }
};

subtest 'Cleanup' => sub {
    my $res = $dbi->query('DROP TABLE IF EXISTS `names`');
    ok($res, 'Drop table') or diag $dbi->error;
};

done_testing;

1;

__END__

DB_CONNECT_URL='postgres://foo:pass@localhost/mydb?PrintError=1&foo=123' prove -lv t/03-connect.t
DB_CONNECT_URL='mysql://test:test@192.168.0.1/test?mysql_auto_reconnect=1&mysql_enable_utf8=1' prove -lv t/03-connect.t



( run in 1.242 second using v1.01-cache-2.11-cpan-5b529ec07f3 )