Bug 18361: [QA Follow-up] Resolve warning on undef values supplied
The following warning was raised in Letters.t:
DBIx::Class::ResultSource::_minimal_valueset_satisfying_constraint():
NULL/undef values supplied for requested unique constraint 'primary' (NULL
values in column(s): 'id'). This is almost certainly not what you wanted,
though you can set DBIC_NULLABLE_KEY_NOWARN to disable this warning.
This warning is triggered by this line in C4/Letters.pm:
Koha::SMS::Providers->find( $member->{'sms_provider_id'} );
As you already guessed, the sms_provider_id returns undef.
Resolved in sub find by testing if there are parameters and if so, they
should not be all undefined. (In most cases there will be only one
parameter; but this report is about composite keys.)
Added a trivial test case in Objects.t too.
Test plan:
Run t/db_dependent/Koha/Object.t
Run t/db_dependent/Koha/Objects.t
Run t/db_dependent/Letters.t
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
This commit is contained in:
parent
e1f943b999
commit
e1afa469f8
|
|
@ -20,6 +20,7 @@ package Koha::Objects;
|
|||
use Modern::Perl;
|
||||
|
||||
use Carp;
|
||||
use List::MoreUtils qw( none );
|
||||
|
||||
use Koha::Database;
|
||||
|
||||
|
|
@ -86,7 +87,7 @@ sub find {
|
|||
|
||||
croak 'Cannot use "->find" in list context' if wantarray;
|
||||
|
||||
return unless @pars;
|
||||
return if !@pars || none { defined($_) } @pars;
|
||||
|
||||
my $result = $self->_resultset()->find( @pars );
|
||||
|
||||
|
|
|
|||
|
|
@ -45,13 +45,19 @@ my $borrowernumber_exists = grep { /^borrowernumber$/ } @columns;
|
|||
is( $borrowernumber_exists, 1, 'Koha::Objects->columns should return the table columns' );
|
||||
|
||||
subtest 'find' => sub {
|
||||
plan tests => 2;
|
||||
plan tests => 4;
|
||||
my $patron = $builder->build({source => 'Borrower'});
|
||||
my $patron_object = Koha::Patrons->find( $patron->{borrowernumber} );
|
||||
is( $patron_object->borrowernumber, $patron->{borrowernumber}, '->find should return the correct object' );
|
||||
|
||||
eval { my @patrons = Koha::Patrons->find( $patron->{borrowernumber} ); };
|
||||
like( $@, qr|^Cannot use "->find" in list context|, "->find should not be called in list context to avoid side-effects" );
|
||||
|
||||
# Test sending undef to find; should not generate a warning
|
||||
warning_is { $patron = Koha::Patrons->find( undef ); }
|
||||
"", "Sending undef does not trigger a DBIx warning";
|
||||
warning_is { $patron = Koha::Patrons->find( undef, undef ); }
|
||||
"", "Sending two undefs does not trigger a DBIx warning too";
|
||||
};
|
||||
|
||||
subtest 'update' => sub {
|
||||
|
|
|
|||
Loading…
Reference in New Issue