From 247a34970aa3a4c0ac15497f441253d9c704fb59 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 12 Jul 2017 17:24:24 -0300 Subject: [PATCH] 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 Signed-off-by: Nick Clemens Signed-off-by: Jonathan Druart (cherry picked from commit d5dc473382ccfa118e78e91507384245ce0dcfcb) Signed-off-by: Fridolin Somers (cherry picked from commit da0ed1cba584a7eb182876d75ccd535bbd5d5b35) Signed-off-by: Katrin Fischer --- t/db_dependent/api/v1/holds.t | 14 +++++++++----- t/db_dependent/api/v1/patrons.t | 8 ++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/t/db_dependent/api/v1/holds.t b/t/db_dependent/api/v1/holds.t index c7ec7f8880..4e39473191 100644 --- a/t/db_dependent/api/v1/holds.t +++ b/t/db_dependent/api/v1/holds.t @@ -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; @@ -31,11 +32,14 @@ use Koha::Biblios; 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'); @@ -113,6 +117,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{ @@ -303,8 +308,7 @@ subtest "Test endpoints with permission" => sub { ->json_like('/error', qr/tooManyReserves/); }; - -$dbh->rollback; +$schema->storage->txn_rollback; sub create_biblio { my ($title) = @_; diff --git a/t/db_dependent/api/v1/patrons.t b/t/db_dependent/api/v1/patrons.t index f4b9410712..a5d03e3df4 100644 --- a/t/db_dependent/api/v1/patrons.t +++ b/t/db_dependent/api/v1/patrons.t @@ -20,6 +20,7 @@ use Modern::Perl; use Test::More tests => 20; 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'); @@ -129,4 +129,4 @@ $t->request_ok($tx) ->json_is('/borrowernumber' => $borrower->{ borrowernumber }) ->json_is('/surname' => $borrower->{ surname }); -$dbh->rollback; +$schema->storage->txn_rollback; -- 2.39.5