diff --git a/lib/WebGUI/Shop/AddressBook.pm b/lib/WebGUI/Shop/AddressBook.pm index 1a73ccc50..962b23996 100644 --- a/lib/WebGUI/Shop/AddressBook.pm +++ b/lib/WebGUI/Shop/AddressBook.pm @@ -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} = ""; } diff --git a/t/Shop/AddressBook.t b/t/Shop/AddressBook.t index 881674f93..8181bddf3 100644 --- a/t/Shop/AddressBook.t +++ b/t/Shop/AddressBook.t @@ -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: {