More tests for addressBook.

Fixed bugs in delete and getAddresses.
This commit is contained in:
Colin Kuskie 2008-03-03 02:26:46 +00:00
parent 5064a5ac92
commit 12b72c9b59
2 changed files with 53 additions and 4 deletions

View file

@ -35,7 +35,9 @@ private properties => my %properties;
=head2 addAddress ( address )
Adds an address to the address book.
Adds an address to the address book. Returns a reference to the WebGUI::Shop::Address
object that was created. It does not trap exceptions, so any problems with creating
the object will be passed to the caller.
=head2 address
@ -133,7 +135,7 @@ Deletes this address book and all addresses contained in it.
sub delete {
my ($self) = @_;
foreach my $address (@{$self->addresses}) {
foreach my $address (@{$self->getAddresses}) {
$address->delete;
}
$self->session->db->write("delete from addressBook where addressBookId=?",[$self->getId]);
@ -187,7 +189,7 @@ Returns an array reference of address objects that are in this book.
sub getAddresses {
my ($self) = @_;
my @addressObjects = ();
my $addresses = $self->session->db->read("select addressId from addresses where addressBookId=?",[$self->getId]);
my $addresses = $self->session->db->read("select addressId from address where addressBookId=?",[$self->getId]);
while (my ($addressId) = $addresses->array) {
push(@addressObjects, WebGUI::Shop::Address->new($self, $addressId));
}
@ -264,6 +266,7 @@ sub update {
$properties{$id}{lastPayId} = $newProperties->{lastPayId} || $properties{$id}{lastPayId};
$properties{$id}{userId} = (exists $newProperties->{userId}) ? $newProperties->{userId} : $properties{$id}{userId};
$properties{$id}{sessionId} = (exists $newProperties->{sessionId}) ? $newProperties->{sessionId} : $properties{$id}{sessionId};
##Having both a userId and sessionId will confuse create.
if ($properties{$id}{userId} ne "") {
$properties{$id}{sessionId} = "";
}

View file

@ -31,7 +31,7 @@ my $session = WebGUI::Test->session;
#----------------------------------------------------------------------------
# Tests
my $tests = 15;
my $tests = 20;
plan tests => 1 + $tests;
#----------------------------------------------------------------------------
@ -128,6 +128,52 @@ is($bookCount, 1, 'only 1 address book was created');
my $alreadyHaveBook = WebGUI::Shop::AddressBook->create($session);
is($book->getId, $alreadyHaveBook->getId, 'creating an addressbook as visitor, when you already have one, returns the one already created');
#######################################################################
#
# getId
#
#######################################################################
is($book->getId, $book->get('addressBookId'), 'getId is a shortcut for ->get');
#######################################################################
#
# addAddress
#
#######################################################################
my $address1 = $book->addAddress({ label => q{Red's cell} });
isa_ok($address1, 'WebGUI::Shop::Address', 'addAddress returns an object');
my $address2 = $book->addAddress({ label => q{Norton's office} });
#######################################################################
#
# getAddresses
#
#######################################################################
my @addresses = @{ $book->getAddresses() };
cmp_deeply(
\@addresses,
[$address1, $address2],
'getAddresses returns all address objects for this book'
);
#######################################################################
#
# delete
#
#######################################################################
$book->delete();
$bookCount = $session->db->quickScalar('select count(*) from addressBook');
my $addrCount = $session->db->quickScalar('select count(*) from address');
is($bookCount, 0, 'delete: book deleted');
is($addrCount, 0, 'delete: also deletes addresses in the book');
}
END: {