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…
Reference in a new issue