DBIx-ThinSQL

 view release on metacpan or  search on metacpan

t/DBIx/ThinSQL.t  view on Meta::CPAN

use strict;
use warnings;
use lib 't/lib';
use DBIx::ThinSQL ':all';
use Test::DBIx::ThinSQL qw/run_in_tempdir/;
use Test::Fatal qw/exception/;
use Test::More;

plan skip_all => 'only test with DBD::SQLite'
  unless eval { require DBD::SQLite };

# now let's make a database check our syntax
run_in_tempdir {

    my $driver = eval { require DBD::SQLite } ? 'SQLite' : 'DBM';

    # DBD::DBM doesn't seem to support this style of construction
  SKIP: {
        skip 'DBD::DBM limitation', 1 if $driver eq 'DBM';

        my $db = DBI->connect(
            "dbi:$driver:dbname=x",
            '', '',
            {
                RaiseError => 1,
                PrintError => 0,
                RootClass  => 'DBIx::ThinSQL',
            },
        );

        isa_ok $db, 'DBIx::ThinSQL::db';
    }

    my $db =
      DBIx::ThinSQL->connect( "dbi:$driver:dbname=x'", '', '',
        { RaiseError => 1, PrintError => 0, },
      );

    isa_ok $db, 'DBIx::ThinSQL::db';

    $db->do("CREATE TABLE users ( name TEXT PRIMARY KEY, phone TEXT )");
    my $res;
    my @res;

    $res = $db->xdo(
        insert_into => 'users',
        values      => [ 'name1', bv('phone1') ],
    );
    is $res, 1, 'xdo insert 1';

    $res = $db->xdo(
        insert_into => 'users',
        values      => [ bv('name2'), 'phone4' ],
    );
    is $res, 1, 'xdo insert 2';

    $res = $db->xdo(
        insert_into => 'users',
        values      => [ 'name3', 'phone3' ],
    );
    is $res, 1, 'xdo insert 3';

    $res = $db->xdo(
        delete_from => 'users',
        where       => [ 'name = ', bv('name3') ],
    );



( run in 1.119 second using v1.01-cache-2.11-cpan-54e63673c56 )