Bug 18826: rollback transaction for api tests

The holds.t tests for the REST api do no rollback properly and modify
the DB (no cleanup).
This comes from a bug caused by SessionStorage = mysql (default)

The error is:
    "rollback ineffective with AutoCommit enabled"

Test plan:
  select count(*) from borrowers;
  prove t/db_dependent/api/v1/holds.t
  select count(*) from borrowers;
=> The number of entry must be the same before and after the tests have
been executed

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Jonathan Druart 2017-07-12 17:24:24 -03:00
parent f55b849346
commit d5dc473382
2 changed files with 13 additions and 9 deletions

View File

@ -20,6 +20,7 @@ use Modern::Perl;
use Test::More tests => 4;
use Test::Mojo;
use t::lib::TestBuilder;
use t::lib::Mocks;
use DateTime;
@ -32,11 +33,14 @@ use Koha::Biblioitems;
use Koha::Items;
use Koha::Patrons;
my $schema = Koha::Database->new->schema;
my $builder = t::lib::TestBuilder->new();
my $dbh = C4::Context->dbh;
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
$schema->storage->txn_begin;
# FIXME: sessionStorage defaults to mysql, but it seems to break transaction handling
# this affects the other REST api tests
t::lib::Mocks::mock_preference( 'SessionStorage', 'tmp' );
$ENV{REMOTE_ADDR} = '127.0.0.1';
my $t = Test::Mojo->new('Koha::REST::V1');
@ -114,6 +118,7 @@ my $itemnumber = create_item($biblionumber, 'TEST000001');
my $biblionumber2 = create_biblio('RESTful Web APIs');
my $itemnumber2 = create_item($biblionumber2, 'TEST000002');
my $dbh = C4::Context->dbh;
$dbh->do('DELETE FROM reserves');
$dbh->do('DELETE FROM issuingrules');
$dbh->do(q{
@ -304,8 +309,7 @@ subtest "Test endpoints with permission" => sub {
->json_like('/error', qr/tooManyReserves/);
};
$dbh->rollback;
$schema->storage->txn_rollback;
sub create_biblio {
my ($title) = @_;

View File

@ -20,6 +20,7 @@ use Modern::Perl;
use Test::More tests => 21;
use Test::Mojo;
use t::lib::TestBuilder;
use t::lib::Mocks;
use C4::Auth;
use C4::Context;
@ -27,11 +28,10 @@ use C4::Context;
use Koha::Database;
use Koha::Patron;
my $schema = Koha::Database->new->schema;
my $builder = t::lib::TestBuilder->new();
my $dbh = C4::Context->dbh;
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
$schema->storage->txn_begin;
$ENV{REMOTE_ADDR} = '127.0.0.1';
my $t = Test::Mojo->new('Koha::REST::V1');
@ -131,4 +131,4 @@ $t->request_ok($tx)
->json_is('/surname' => $borrower->{ surname })
->json_is('/lost' => 1 );
$dbh->rollback;
$schema->storage->txn_rollback;