addRequestType and getRequestType methods.
Including tests for both.
This commit is contained in:
		
							parent
							
								
									bf4d5d8b23
								
							
						
					
					
						commit
						19d513280f
					
				
					 2 changed files with 89 additions and 1 deletions
				
			
		|  | @ -196,6 +196,70 @@ sub addEmailAddress($$$$) { | |||
| } | ||||
| ###################################################################### | ||||
| 
 | ||||
| =begin getRequestType | ||||
| 
 | ||||
| Arguments: | ||||
| 
 | ||||
| =over | ||||
| 
 | ||||
| =item type | ||||
| 
 | ||||
|    A string describing the request. | ||||
| 
 | ||||
| =back | ||||
| 
 | ||||
| Returns the id value of the request_type entry.  undef is returned if there | ||||
| is no request of that type. | ||||
| 
 | ||||
| =cut | ||||
| 
 | ||||
| sub getRequestType($$) { | ||||
|   my($self, $type) = @_; | ||||
| 
 | ||||
|   return undef if not defined $type; | ||||
|   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; | ||||
| } | ||||
| ###################################################################### | ||||
| 
 | ||||
| =begin addRequestType | ||||
| 
 | ||||
| Arguments: | ||||
| 
 | ||||
| =over | ||||
| 
 | ||||
| =item type | ||||
| 
 | ||||
|    A string describing the request.  die()'s if not defined. | ||||
| 
 | ||||
| =back | ||||
| 
 | ||||
| Returns the id value of the request_type entry.  If the type already exists, | ||||
| it is simply returned. | ||||
| 
 | ||||
| =cut | ||||
| 
 | ||||
| sub addRequestType($$) { | ||||
|   my($self, $requestType) = @_; | ||||
| 
 | ||||
|   die "addRequestType: undefined request type." unless defined $requestType; | ||||
| 
 | ||||
|   my $requestId = $self->getRequestType($requestType); | ||||
|   return $requestId if (defined $requestId); | ||||
| 
 | ||||
|   $self->dbh->begin_work(); | ||||
| 
 | ||||
|   my $sth = $self->dbh->prepare("INSERT INTO request_type(type) VALUES(?)"); | ||||
| 
 | ||||
|   $sth->execute($requestType); | ||||
|   $requestId = $self->dbh->last_insert_id("","","",""); | ||||
|   $sth->finish(); | ||||
|   $self->dbh->commit(); | ||||
|   return $requestId; | ||||
| } | ||||
| ###################################################################### | ||||
| 
 | ||||
| =head1 Non-Public Methods | ||||
| 
 | ||||
| These methods are part of the internal implementation are not recommended for | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ | |||
| use strict; | ||||
| use warnings; | ||||
| 
 | ||||
| use Test::More tests => 25; | ||||
| use Test::More tests => 31; | ||||
| use Test::Exception; | ||||
| 
 | ||||
| use Scalar::Util qw(looks_like_number); | ||||
|  | @ -118,6 +118,30 @@ ok($same = $sp->addAddressType("paypal payer"), "addAddressType: lookup works"); | |||
| 
 | ||||
| ok($same == $paypalPayerAddressType, "addAddressType: lookup returns same as the basic add"); | ||||
| 
 | ||||
| =item addAddressType/getRequestType | ||||
| 
 | ||||
| =cut | ||||
| 
 | ||||
| dies_ok { $sp->addRequestType(undef); } | ||||
|         "addRequestType: undef argument dies."; | ||||
| 
 | ||||
| my $requestTypeId; | ||||
| 
 | ||||
| ok( (not defined $sp->getRequestType('t-shirt-0')), "getRequestType: returns undef when not found"); | ||||
| 
 | ||||
| lives_ok { $requestTypeId = $sp->addRequestType('t-shirt-0'); } | ||||
|   "addRequestType: succeeds on add"; | ||||
| 
 | ||||
| ok( (defined $requestTypeId and looks_like_number($requestTypeId) and $requestTypeId > 0), | ||||
|     "addRequestType: id is a number"); | ||||
| 
 | ||||
| my $testSameRequestType; | ||||
| 
 | ||||
| lives_ok { $testSameRequestType = $sp->addRequestType('t-shirt-0'); } | ||||
|   "addRequestType: succeeds on add when type already exists"; | ||||
| 
 | ||||
| is $requestTypeId,  $testSameRequestType, | ||||
|     "addRequestType: lookup first of existing request type before adding."; | ||||
| 
 | ||||
| =back | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn