findDonor: empty criteria finds everyone.
Rather than die() when the criteria list is empty, instead return the entire list.
This commit is contained in:
parent
97f08a7bd8
commit
dbeb98d0f2
2 changed files with 18 additions and 6 deletions
|
@ -1081,6 +1081,8 @@ Arguments:
|
|||
A hash reference, the following keys are considered, and are "anded" together
|
||||
-- in that the donor sought must have all these criteria to be found.
|
||||
|
||||
If no criteria are given, all donors are returned.
|
||||
|
||||
=over
|
||||
|
||||
=item emailAddress
|
||||
|
@ -1104,8 +1106,11 @@ Returns a list of donorIds that meets the criteria, or none if not found.
|
|||
|
||||
sub findDonor($$) {
|
||||
my($self, $params) = @_;
|
||||
die "findDonor: no search criteria given"
|
||||
unless defined $params->{ledgerEntityId} or defined $params->{emailAddress};
|
||||
|
||||
unless (defined $params->{ledgerEntityId} or defined $params->{emailAddress}) {
|
||||
my $rr = $self->dbh()->selectall_hashref("SELECT id FROM donor", 'id');
|
||||
return keys %$rr;
|
||||
}
|
||||
|
||||
my @donorIds;
|
||||
if (not defined $params->{emailAddress}) {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test::More tests => 259;
|
||||
use Test::More tests => 260;
|
||||
use Test::Exception;
|
||||
use Sub::Override;
|
||||
use File::Temp qw/tempfile/;
|
||||
|
@ -692,8 +692,15 @@ is($ret, 'drapper@example.org', "getPreferredEmailAddress: ....and returns the c
|
|||
|
||||
my @lookupDonorIds;
|
||||
|
||||
dies_ok { @lookupDonorIds = $sp->findDonor({}); }
|
||||
"findDonor: no search criteria dies";
|
||||
lives_ok { @lookupDonorIds = $sp->findDonor({}); }
|
||||
"findDonor: no search criteria succeeds and...";
|
||||
|
||||
my(%vals);
|
||||
@vals{@lookupDonorIds} = @lookupDonorIds;
|
||||
|
||||
is_deeply(\%vals, { $campbellId => $campbellId, $sterlingId => $sterlingId,
|
||||
$olsonId => $olsonId, $drapperId => $drapperId },
|
||||
"findDonor: ... and returns all donorIds.");
|
||||
|
||||
lives_ok { @lookupDonorIds = $sp->findDonor({ledgerEntityId => "NotFound" }); }
|
||||
"findDonor: 1 lookup of known missing succeeds ...";
|
||||
|
@ -733,7 +740,7 @@ is_deeply(\@lookupDonorIds, [$olsonId], "findDonor: ... and finds right entry.")
|
|||
lives_ok { @lookupDonorIds = $sp->findDonor({emailAddress => 'everyone@example.net'}); }
|
||||
"findDonor: single criteria find expecting multiple records succeeds...";
|
||||
|
||||
my(%vals);
|
||||
%vals = ();
|
||||
@vals{@lookupDonorIds} = @lookupDonorIds;
|
||||
|
||||
is_deeply(\%vals, { $olsonId => $olsonId, $drapperId => $drapperId }, "findDonor: ... and finds the right entires.");
|
||||
|
|
Loading…
Reference in a new issue