getRequestType with no arguments returns full list
I debated whether to create a getRequestTypes() instead, but this seemed reasonable. I am too far out of Perl5 programming culture to know if this sort of interface is recommended practice.
This commit is contained in:
		
							parent
							
								
									7398b2f3f7
								
							
						
					
					
						commit
						1577a5613c
					
				
					 2 changed files with 29 additions and 9 deletions
				
			
		|  | @ -682,22 +682,27 @@ Arguments: | ||||||
| 
 | 
 | ||||||
| =item type | =item type | ||||||
| 
 | 
 | ||||||
|    A string describing the request. |    A string describing the request.  Argument is optional. | ||||||
| 
 | 
 | ||||||
| =back | =back | ||||||
| 
 | 
 | ||||||
| Returns the id value of the request_type entry.  undef is returned if there | If type is given, returns a scalar the id value of the request_type entry. | ||||||
| is no request of that type. | undef is returned if there is no request of that type. | ||||||
|  | 
 | ||||||
|  | If type is not given, a list of all known request types is returned. | ||||||
| 
 | 
 | ||||||
| =cut | =cut | ||||||
| 
 | 
 | ||||||
| sub getRequestType($$) { | sub getRequestType($;$) { | ||||||
|   my($self, $type) = @_; |   my($self, $type) = @_; | ||||||
| 
 | 
 | ||||||
|   return undef if not defined $type; |   if (not defined $type) { | ||||||
|   my $val = $self->dbh()->selectall_hashref("SELECT id, type FROM request_type WHERE type = '$type'", 'type'); |      return @{$self->dbh()->selectcol_arrayref("SELECT type, id FROM request_type ORDER BY id", { Columns=>[1] })}; | ||||||
|   return $val->{$type}{id} if (defined $val and defined $val->{$type} and defined $val->{$type}{id}); |    } else { | ||||||
|   return undef; |      my $val = $self->dbh()->selectall_hashref("SELECT id, type FROM request_type WHERE type = '$type'", 'type'); | ||||||
|  |      return $val->{$type}{id} if (defined $val and defined $val->{$type} and defined $val->{$type}{id}); | ||||||
|  |      return undef; | ||||||
|  |    } | ||||||
| } | } | ||||||
| ###################################################################### | ###################################################################### | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| use strict; | use strict; | ||||||
| use warnings; | use warnings; | ||||||
| 
 | 
 | ||||||
| use Test::More tests => 331; | use Test::More tests => 334; | ||||||
| use Test::Exception; | use Test::Exception; | ||||||
| use Sub::Override; | use Sub::Override; | ||||||
| use File::Temp qw/tempfile/; | use File::Temp qw/tempfile/; | ||||||
|  | @ -413,6 +413,10 @@ lives_ok { $tShirt0RequestTypeId = $sp->addRequestType('t-shirt-0'); } | ||||||
| ok( (defined $tShirt0RequestTypeId and looks_like_number($tShirt0RequestTypeId) and $tShirt0RequestTypeId > 0), | ok( (defined $tShirt0RequestTypeId and looks_like_number($tShirt0RequestTypeId) and $tShirt0RequestTypeId > 0), | ||||||
|     "addRequestType: id is a number"); |     "addRequestType: id is a number"); | ||||||
| 
 | 
 | ||||||
|  | my @allRequestsList = $sp->getRequestType(); | ||||||
|  | 
 | ||||||
|  | is_deeply(\@allRequestsList, ['t-shirt-0' ], "getRequestType: no argument returns full list of request types (1)"); | ||||||
|  | 
 | ||||||
| my $testSameRequestType; | my $testSameRequestType; | ||||||
| 
 | 
 | ||||||
| lives_ok { $testSameRequestType = $sp->addRequestType('t-shirt-0'); } | lives_ok { $testSameRequestType = $sp->addRequestType('t-shirt-0'); } | ||||||
|  | @ -490,6 +494,11 @@ my $joinEmailListRequestId = $sp->getRequestType("join-announce-email-list"); | ||||||
| ok((defined $joinEmailListRequestId and looks_like_number($joinEmailListRequestId) and $joinEmailListRequestId > 0), | ok((defined $joinEmailListRequestId and looks_like_number($joinEmailListRequestId) and $joinEmailListRequestId > 0), | ||||||
|    "addRequest: underlying call to addRequestType works properly, per getRequestType"); |    "addRequest: underlying call to addRequestType works properly, per getRequestType"); | ||||||
| 
 | 
 | ||||||
|  | @allRequestsList = $sp->getRequestType(); | ||||||
|  | 
 | ||||||
|  | is_deeply(\@allRequestsList, ['t-shirt-0', 'join-announce-email-list'], | ||||||
|  |           "getRequestType: no argument returns full list of request types (2)"); | ||||||
|  | 
 | ||||||
| my $tshirtSmallRequestId; | my $tshirtSmallRequestId; | ||||||
| 
 | 
 | ||||||
| lives_ok { $tshirtSmallRequestId = | lives_ok { $tshirtSmallRequestId = | ||||||
|  | @ -501,7 +510,13 @@ lives_ok { $tshirtSmallRequestId = | ||||||
| ok( (defined $tshirtSmallRequestId and looks_like_number($tshirtSmallRequestId) and $tshirtSmallRequestId > 0), | ok( (defined $tshirtSmallRequestId and looks_like_number($tshirtSmallRequestId) and $tshirtSmallRequestId > 0), | ||||||
|     "addRequest: successful call returns an integer id."); |     "addRequest: successful call returns an integer id."); | ||||||
| 
 | 
 | ||||||
|  | @allRequestsList = $sp->getRequestType(); | ||||||
|  | 
 | ||||||
|  | is_deeply(\@allRequestsList, ['t-shirt-0', 'join-announce-email-list', 't-shirt-small-only' ], | ||||||
|  |           "getRequestType: no argument returns full list of request types (3)"); | ||||||
|  | 
 | ||||||
| my $tShirt0RequestId; | my $tShirt0RequestId; | ||||||
|  | 
 | ||||||
| lives_ok { $tShirt0RequestId = | lives_ok { $tShirt0RequestId = | ||||||
|              $sp->addRequest({ donorId => $drapperId, requestTypeId => $tShirt0RequestTypeId, |              $sp->addRequest({ donorId => $drapperId, requestTypeId => $tShirt0RequestTypeId, | ||||||
|                                requestConfigurationId => $tShirt0Data->{$tShirt0RequestTypeId}{'MenL'} }); } |                                requestConfigurationId => $tShirt0Data->{$tShirt0RequestTypeId}{'MenL'} }); } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn