From 63960cbb89ec22c0f984c8d02d140e76af03c18a Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 15 Apr 2020 12:48:02 -0400 Subject: [PATCH] Bug 14708: Prevent deletion of Anonymous Patron at Koha::Patron::delete Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Katrin Fischer Signed-off-by: Jonathan Druart --- Koha/Patron.pm | 3 +++ t/db_dependent/Koha/Patrons.t | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 8f3d8e6990..7638da1cd7 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -360,6 +360,9 @@ other lists are kept. sub delete { my ($self) = @_; + my $anonymous_patron = C4::Context->preference("AnonymousPatron"); + return $self if $anonymous_patron && $self->id eq $anonymous_patron; + $self->_result->result_source->schema->txn_do( sub { # Cancel Patron's holds diff --git a/t/db_dependent/Koha/Patrons.t b/t/db_dependent/Koha/Patrons.t index aa04e0564c..0e6eade11b 100755 --- a/t/db_dependent/Koha/Patrons.t +++ b/t/db_dependent/Koha/Patrons.t @@ -1022,7 +1022,7 @@ subtest 'notice_email_address' => sub { }; subtest 'search_patrons_to_anonymise & anonymise_issue_history' => sub { - plan tests => 4; + plan tests => 5; # TODO create a subroutine in t::lib::Mocks my $branch = $builder->build({ source => 'Branch' }); @@ -1036,6 +1036,15 @@ subtest 'search_patrons_to_anonymise & anonymise_issue_history' => sub { t::lib::Mocks::mock_preference( 'AnonymousPatron', $anonymous->{borrowernumber} ); + subtest 'Anonymous Patron should be undeleteable' => sub { + plan tests => 1; + + my $anonymous_patron = Koha::Patrons->find( $anonymous->{borrowernumber} ); + $anonymous_patron->delete(); + $anonymous_patron = Koha::Patrons->find( $anonymous->{borrowernumber} ); + is( $anonymous_patron->id, $anonymous->{borrowernumber}, "Anonymous Patron was not deleted" ); + }; + subtest 'patron privacy is 1 (default)' => sub { plan tests => 9; -- 2.39.5