releaseRequestHold(): Implement & update tests.
Some of these tests were written a while ago, and the function never implemented. It is now implemented and test are updated.
This commit is contained in:
parent
a3ea7a58df
commit
99650b23ee
2 changed files with 77 additions and 2 deletions
|
@ -1447,7 +1447,72 @@ sub holdRequest($$) {
|
||||||
}
|
}
|
||||||
return $holdRecord->{$requestId}{id};
|
return $holdRecord->{$requestId}{id};
|
||||||
}
|
}
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
=begin releaseRequestHold
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
=item $parmas
|
||||||
|
|
||||||
|
A hash reference, the following keys are considered:
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item donorId
|
||||||
|
|
||||||
|
Valid donor_id number currently in the database. die() will occur if
|
||||||
|
the id number is not in the database already as a supporter id.
|
||||||
|
|
||||||
|
=item requestType / requestTypeId
|
||||||
|
|
||||||
|
If one or both of these parameters is defined, they are used as arguments
|
||||||
|
to C<getRequest()> method. die()'s if neither is defined.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
If the release has been successful, returns the id of the hold request that
|
||||||
|
is now released. Otherwise, undef is returned.
|
||||||
|
|
||||||
|
Note that the release can also be "unsuccessful" if the request wasn't on
|
||||||
|
hold in the first place.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
sub releaseRequestHold($$) {
|
||||||
|
my($self, $params) = @_;
|
||||||
|
die "holdRequest: undefined donorId" unless defined $params->{donorId};
|
||||||
|
my $donorId = $params->{donorId};
|
||||||
|
die "holdRequest: donorId, \"$donorId\" not found in supporter database"
|
||||||
|
unless $self->_verifyId($donorId);
|
||||||
|
die "holdRequest: requestType and requestTypeId are all undefined"
|
||||||
|
unless defined $params->{requestType} or defined $params->{requestTypeId};
|
||||||
|
|
||||||
|
my $req = $self->getRequest($params);
|
||||||
|
return undef if not defined $req;
|
||||||
|
my $requestId = $req->{requestId};
|
||||||
|
return undef if not defined $requestId;
|
||||||
|
|
||||||
|
my $holdLookupSql = "SELECT id, request_id, release_date FROM request_hold WHERE request_id = " .
|
||||||
|
$self->dbh->quote($requestId, 'SQL_INTEGER');
|
||||||
|
|
||||||
|
my $holdRecord = $self->dbh()->selectall_hashref($holdLookupSql, "request_id");
|
||||||
|
return undef if (not defined $holdRecord or not defined $holdRecord->{$requestId});
|
||||||
|
|
||||||
|
# If this has already been released, just return the release id again.
|
||||||
|
return $holdRecord->{$requestId}{id} if defined $holdRecord->{$requestId}{release_date} and
|
||||||
|
$holdRecord->{$requestId}{release_date} le $TODAY;
|
||||||
|
$self->_beginWork;
|
||||||
|
my $sth = $self->dbh->prepare("UPDATE request_hold SET release_date = date('now') WHERE id = ?");
|
||||||
|
|
||||||
|
$sth->execute($holdRecord->{$requestId}{id});
|
||||||
|
$sth->finish;
|
||||||
|
$self->_commit;
|
||||||
|
return $holdRecord->{$requestId}{id};
|
||||||
|
}
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
=begin findDonor
|
=begin findDonor
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use Test::More tests => 334;
|
use Test::More tests => 341;
|
||||||
use Test::Exception;
|
use Test::Exception;
|
||||||
use Sub::Override;
|
use Sub::Override;
|
||||||
use File::Temp qw/tempfile/;
|
use File::Temp qw/tempfile/;
|
||||||
|
@ -762,9 +762,19 @@ is($tt->{notes}, undef, "getRequest: notes are undef when null in database.")
|
||||||
|
|
||||||
my $releasedHoldId;
|
my $releasedHoldId;
|
||||||
|
|
||||||
lives_ok { $releasedHoldId = $sp->releaseRequestHold(donorId => $drapperId, requestType => 't-shirt-0'); }
|
lives_ok { $releasedHoldId = $sp->releaseRequestHold({ donorId => $drapperId, requestType => 't-shirt-0' }); }
|
||||||
"releaseRequestHold: release of a known held request succeeds...";
|
"releaseRequestHold: release of a known held request succeeds...";
|
||||||
is($releasedHoldId, $drapperTShirt0HoldId, "releaseRequestHold: ... & returns same hold id as holdRequest() call did");
|
is($releasedHoldId, $drapperTShirt0HoldId, "releaseRequestHold: ... & returns same hold id as holdRequest() call did");
|
||||||
|
lives_ok { $req = $sp->getRequest({ donorId => $drapperId, requestType => 't-shirt-0'}) }
|
||||||
|
"releaseRequestHold: lookup of request after release succeeds....";
|
||||||
|
is($req->{holdReleaseDate}, $today, "... and the release date is today.");
|
||||||
|
|
||||||
|
lives_ok { $releasedHoldId = $sp->releaseRequestHold({ donorId => $drapperId, requestType => 't-shirt-0' }); }
|
||||||
|
"releaseRequestHold: release again of the same a hold request also succeeds...";
|
||||||
|
is($releasedHoldId, $drapperTShirt0HoldId, "releaseRequestHold: ... & also returns same hold id as holdRequest() call did");
|
||||||
|
lives_ok { $req = $sp->getRequest({ donorId => $drapperId, requestType => 't-shirt-0'}) }
|
||||||
|
"releaseRequestHold: lookup of request after second release succeeds....";
|
||||||
|
is($req->{holdReleaseDate}, $today, "... and the release date is still set to today.");
|
||||||
|
|
||||||
|
|
||||||
lives_ok { $newFRID = $sp->fulfillRequest( { donorId => $drapperId,
|
lives_ok { $newFRID = $sp->fulfillRequest( { donorId => $drapperId,
|
||||||
|
|
Loading…
Reference in a new issue