File: 01_table.t

package info (click to toggle)
libclass-dbi-pg-perl 0.06-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 56 kB
  • ctags: 8
  • sloc: perl: 67; makefile: 41
file content (74 lines) | stat: -rw-r--r-- 1,714 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
use strict;
use Test::More tests => 5;

use DBI;

my $dbh;
my $database = $ENV{DB_NAME};
my $user     = $ENV{DB_USER};
my $password = $ENV{DB_PASS};

SKIP: {
    skip
      'You need to set the DB_NAME, DB_USER and DB_PASS environment variables',
      5
      unless ( $database && $user );
    my $dsn = "dbi:Pg:dbname=$database" if $database;
    $dbh = DBI->connect(
        $dsn, $user,
        $password,
        {
            AutoCommit => 1,
            PrintError => 0,
            RaiseError => 1,
        }
    );

    $dbh->do(<<'SQL');
CREATE TABLE class_dbi_pg1 (
    id SERIAL NOT NULL PRIMARY KEY,
    dat TEXT
)
SQL

    my $sth = $dbh->prepare(<<"SQL");
INSERT INTO class_dbi_pg1 (dat) VALUES(?)
SQL

    for my $dat (qw(foo bar baz)) {
        $sth->execute($dat);
    }
    $sth->finish;

    eval <<'' or die $@;
package Class::DBI::Pg::Test;
use base qw(Class::DBI::Pg);
__PACKAGE__->set_db( Main => $dsn, $user, $password );
__PACKAGE__->set_up_table('class_dbi_pg1');

    is( Class::DBI::Pg::Test->retrieve_all, 3 );
    my $obj = Class::DBI::Pg::Test->retrieve(2);
    is( $obj->dat, 'bar' );
    my ($obj2) = Class::DBI::Pg::Test->search( dat => 'foo' );
    is( $obj2->id, 1 );

    like( Class::DBI::Pg::Test->sequence, qr/class_dbi_pg1_id_seq/ );
    my $new_obj = Class::DBI::Pg::Test->create( { dat => 'newone' } );
    is( $new_obj->id, 4 );

    Class::DBI::Pg::Test->db_Main->disconnect;

}

END {
    if ($dbh) {
        eval {
            unless ( Class::DBI::Pg::Test->pg_version >= 7.3 )
            {
                $dbh->do('DROP SEQUENCE class_dbi_pg1_id_seq');
            }
            $dbh->do('DROP TABLE class_dbi_pg1');
        };
        $dbh->disconnect;
    }
}