@@ -, +, @@ Koha::Patron::delete --- Koha/Patron.pm | 3 +++ t/db_dependent/Koha/Patrons.t | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) --- a/Koha/Patron.pm +++ a/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 --- a/t/db_dependent/Koha/Patrons.t +++ a/t/db_dependent/Koha/Patrons.t @@ -1063,7 +1063,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' }); @@ -1077,6 +1077,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; --