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}; | ||||
| } | ||||
| ###################################################################### | ||||
| 
 | ||||
| =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 | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ | |||
| use strict; | ||||
| use warnings; | ||||
| 
 | ||||
| use Test::More tests => 334; | ||||
| use Test::More tests => 341; | ||||
| use Test::Exception; | ||||
| use Sub::Override; | ||||
| use File::Temp qw/tempfile/; | ||||
|  | @ -762,9 +762,19 @@ is($tt->{notes}, undef,    "getRequest: notes are undef when null in database.") | |||
| 
 | ||||
| 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..."; | ||||
| 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, | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn