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
|
=head1 Non-Public Methods
|
||||||
|
|
||||||
These methods are part of the internal implementation are not recommended for
|
These methods are part of the internal implementation are not recommended for
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use Test::More tests => 25;
|
use Test::More tests => 31;
|
||||||
use Test::Exception;
|
use Test::Exception;
|
||||||
|
|
||||||
use Scalar::Util qw(looks_like_number);
|
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");
|
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
|
=back
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue