From 4ee4e967af54e745c8bcf4ade433084b6af43d95 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 --- 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 9948f8c35c..17ef09cb90 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -359,6 +359,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 d4582fcbd9..30a28c1576 100644 --- a/t/db_dependent/Koha/Patrons.t +++ b/t/db_dependent/Koha/Patrons.t @@ -1051,7 +1051,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' }); @@ -1065,6 +1065,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.24.1 (Apple Git-126)