Bug 37757: (follow-up) Warn on bad values and survive

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit d50aa6aa72)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Tomas Cohen Arazi 2024-08-28 15:43:53 -03:00 committed by Lucas Gass
parent f5c0c34754
commit 9f592cdafd
2 changed files with 22 additions and 2 deletions

View File

@ -20,7 +20,7 @@ package Koha::Patron;
use Modern::Perl;
use List::MoreUtils qw( any uniq );
use List::MoreUtils qw( any none uniq );
use JSON qw( to_json );
use Unicode::Normalize qw( NFKD );
use Try::Tiny;
@ -1667,6 +1667,11 @@ sub notice_email_address {
my $which_address = C4::Context->preference("EmailFieldPrimary");
if ( $which_address && ( none { $_ eq $which_address } qw{email emailpro B_email cardnumber MULTI} ) ) {
warn "Invalid value for EmailFieldPrimary ($which_address)";
$which_address = undef;
}
# if syspref is set to 'first valid', look up email address
return $self->first_valid_email_address
unless $which_address;

View File

@ -1840,7 +1840,7 @@ subtest 'notify_library_of_registration()' => sub {
subtest 'notice_email_address() tests' => sub {
plan tests => 3;
plan tests => 5;
$schema->storage->txn_begin;
@ -1866,6 +1866,21 @@ subtest 'notice_email_address() tests' => sub {
"Koha::Patron->notice_email_address returns correct value when EmailFieldPrimary is 'MULTI' and EmailFieldSelection is 'email,emailpro'"
);
my $invalid = 'potato';
t::lib::Mocks::mock_preference( 'EmailFieldPrecedence', 'email|emailpro' );
t::lib::Mocks::mock_preference( 'EmailFieldPrimary', $invalid );
my $email;
warning_is { $email = $patron->notice_email_address(); }
qq{Invalid value for EmailFieldPrimary ($invalid)},
'Warning correctly generated on invalid system preference';
is(
$email, $patron->email,
"Koha::Patron->notice_email_address falls back to correct value when EmailFieldPrimary is invalid"
);
$schema->storage->txn_rollback;
};