addAddressType: initial implementation & unit test

This commit is contained in:
Bradley M. Kuhn 2015-12-09 19:48:59 -08:00
parent a1df7fc544
commit a3aafac44a
2 changed files with 52 additions and 0 deletions

View file

@ -110,6 +110,41 @@ sub addSupporter ($$) {
}
######################################################################
=begin addAddressType
Adds an address type, or returns the existing one of that name if it already exists.
Arguments:
=over
=item $addressType
Scalar string that contains the email address type. die() is called if not defined.
=back
Returns id of the address type.
=cut
sub addAddressType($$) {
my($self, $type) = @_;
die "addAddressType: type argument must be defined" if not defined $type;
my $val = $self->dbh()->selectall_hashref("SELECT id, name FROM address_type WHERE name = '$type'", 'name');
return $val->{$type}{id} if (defined $val and defined $val->{$type} and defined $val->{$type}{id});
my $sth = $self->dbh->prepare("INSERT INTO address_type(name) VALUES(?)");
$sth->execute($type);
my $id = $self->dbh->last_insert_id("","","","");
$sth->finish();
return $id;
}
=begin addEmailAddress
Arguments:

View file

@ -79,6 +79,23 @@ dies_ok { $sp->_addEmailAdress(undef, 'drapper@example.org', 'paypal'); }
dies_ok { $sp->_addEmailAdress("String", 'drapper@example.org', 'paypal'); }
"_addEmailAdress: dies for non-numeric id";
=item addAddressType
=cut
dies_ok { $sp->addAddressType(undef); } "addAddressType: dies for undef";
my $paypalPayerAddressType;
ok($paypalPayerAddressType = $sp->addAddressType("paypal payer"), "addAddressType: basic add works");
my $same;
ok($same = $sp->addAddressType("paypal payer"), "addAddressType: lookup works");
ok($same == $paypalPayerAddressType, "addAddressType: lookup returns same as the basic add");
=back
=item Internal methods used only by the module itself.