Mojo-Pg-Che
view release on metacpan or search on metacpan
t/05-transaction.t view on Meta::CPAN
use Mojo::Base -strict;
use Test::More;
use Mojo::Pg::Che;
plan skip_all => 'set env TEST_PG="DBI:Pg:dbname=<...>/<pg_user>/<passwd>" to enable this test' unless $ENV{TEST_PG};
my ($dsn, $user, $pw) = split m|[/]|, $ENV{TEST_PG};
my $pg = Mojo::Pg::Che->connect($dsn, $user, $pw,);
my $seq_name = 'Mojo_Pg_Che_test_seq_remove_it';
my $r = $pg->do("drop sequence IF EXISTS $seq_name;");
is $r, '0E0', 'do create';
my $seq_tx = sub {
my ($commit) = @_;
my $tx = $pg->begin;
my $rc = $tx->do("create sequence $seq_name;");
$tx->commit
if $commit;
is $rc, '0E0', 'do create';
#~ return $tx;
};
my $seq = sub { $pg->query("select * from $seq_name;") };
$seq_tx->();
my $res = eval { $seq->() };
like $@, qr/execute failed/, 'right rollback';
$seq_tx->(1);
#$tx->commit;
$res = eval { $seq->() };
is $res->hash->{last_value}, 1, 'right commit';
my ($rc, $sth) = $pg->do("drop sequence $seq_name;");#, {Async=>1}
#~ Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
#~ warn $sth;
#~ warn $$rc->()->hash;
#~ is $rc, 1, 'do async drop';
$res = eval { $seq->() };
like $@, qr/execute failed/, 'right autocommit';
done_testing();
( run in 0.611 second using v1.01-cache-2.11-cpan-71847e10f99 )