From 2efc873e28566b5c4e10f78fd4165ca409d79d6a Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 15 Apr 2020 13:48:09 -0400 Subject: [PATCH] Bug 14708: Don't allow merging of Anonymous Patron into other patron records Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Katrin Fischer Signed-off-by: Jonathan Druart (cherry picked from commit d9a54e0d3387c3ad057a67c7e2b5c668154f65f6) Signed-off-by: Andrew Fuerste-Henry --- Koha/Patron.pm | 5 +++++ t/db_dependent/Koha/Patrons.t | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 130ef5c860..43f47cb2ab 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -568,6 +568,11 @@ sub merge_with { $self->_result->result_source->schema->txn_do( sub { foreach my $patron_id (@patron_ids) { + + if ( my $anonymous_patron = C4::Context->preference("AnonymousPatron") ) { + next if $patron_id eq $anonymous_patron; + } + my $patron = Koha::Patrons->find( $patron_id ); next unless $patron; diff --git a/t/db_dependent/Koha/Patrons.t b/t/db_dependent/Koha/Patrons.t index e9ded6d1dd..6feeb150a3 100644 --- a/t/db_dependent/Koha/Patrons.t +++ b/t/db_dependent/Koha/Patrons.t @@ -1692,7 +1692,7 @@ subtest 'BorrowersLog tests' => sub { $schema->storage->txn_rollback; subtest 'Test Koha::Patrons::merge' => sub { - plan tests => 110; + plan tests => 111; my $schema = Koha::Database->new()->schema(); @@ -1704,6 +1704,10 @@ subtest 'Test Koha::Patrons::merge' => sub { my $loser_1 = $builder->build({ source => 'Borrower' })->{borrowernumber}; my $loser_2 = $builder->build({ source => 'Borrower' })->{borrowernumber}; + my $anonymous_patron_orig = C4::Context->preference('AnonymousPatron'); + my $anonymous_patron = $builder->build({ source => 'Borrower' })->{borrowernumber}; + t::lib::Mocks::mock_preference( 'AnonymousPatron', $anonymous_patron ); + while (my ($r, $field) = each(%$resultsets)) { $builder->build({ source => $r, value => { $field => $keeper->id } }); $builder->build({ source => $r, value => { $field => $loser_1 } }); @@ -1732,7 +1736,9 @@ subtest 'Test Koha::Patrons::merge' => sub { is( Koha::Patrons->find($loser_1), undef, 'Loser 1 has been deleted' ); is( Koha::Patrons->find($loser_2), undef, 'Loser 2 has been deleted' ); + is( ref Koha::Patrons->find($anonymous_patron), 'Koha::Patron', 'Anonymous Patron was not deleted' ); + t::lib::Mocks::mock_preference( 'AnonymousPatron', '' ); $schema->storage->txn_rollback; }; -- 2.39.5