Change the name of the sku accessor for shipsSeparately to isShippingSeparately, since it clashes with a property. Add tests. t/Asset/Sku.t passes.

This commit is contained in:
Colin Kuskie 2010-01-20 18:47:35 -08:00
parent caa1f330b8
commit 3a425f29bc
4 changed files with 13 additions and 20 deletions

View file

@ -634,7 +634,7 @@ sub setTaxConfiguration {
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 shipsSeparately =head2 isShippingSeparately
Returns a boolean indicating whether this item must be shipped separately from other items. Returns a boolean indicating whether this item must be shipped separately from other items.
If the shipsSeparately property is true, but isShippingRequired is false, this will return If the shipsSeparately property is true, but isShippingRequired is false, this will return
@ -642,7 +642,7 @@ false.
=cut =cut
sub shipsSeparately { sub isShippingSeparately {
my ($self) = @_; my ($self) = @_;
return $self->isShippingRequired && $self->shipsSeparately; return $self->isShippingRequired && $self->shipsSeparately;
} }

View file

@ -60,7 +60,7 @@ sub calculate {
## Two items shipped separately = two bundles ## Two items shipped separately = two bundles
## 1 shipped separately plus 1 not = two bundles ## 1 shipped separately plus 1 not = two bundles
## two items shipped together = one bundle ## two items shipped together = one bundle
if ($sku->shipsSeparately) { if ($sku->isShippingSeparately) {
$separatelyShipped += $quantity; $separatelyShipped += $quantity;
} }
else { else {

View file

@ -66,7 +66,7 @@ sub buildXML {
my $itemWeight = $sku->getWeight(); my $itemWeight = $sku->getWeight();
##Items that ship separately with a quantity > 1 are rate estimated as 1 item and then the ##Items that ship separately with a quantity > 1 are rate estimated as 1 item and then the
##shipping cost is multiplied by the quantity. ##shipping cost is multiplied by the quantity.
if (! $sku->shipsSeparately ) { if (! $sku->isShippingSeparately ) {
$itemWeight *= $item->get('quantity'); $itemWeight *= $item->get('quantity');
} }
$weight += $itemWeight; $weight += $itemWeight;
@ -193,7 +193,7 @@ sub _calculateFromXML {
WebGUI::Error::RemoteShippingRate->throw(error => "Illegal package index returned by USPS: $id"); WebGUI::Error::RemoteShippingRate->throw(error => "Illegal package index returned by USPS: $id");
} }
my $unit = $shippableUnits[$id]; my $unit = $shippableUnits[$id];
if ($unit->[0]->getSku->shipsSeparately) { if ($unit->[0]->getSku->isShippingSeparately) {
##This is a single item due to ships separately. Since in reality there will be ##This is a single item due to ships separately. Since in reality there will be
## N things being shipped, multiply the rate by the quantity. ## N things being shipped, multiply the rate by the quantity.
$cost += $rate * $unit->[0]->get('quantity'); $cost += $rate * $unit->[0]->get('quantity');
@ -339,7 +339,7 @@ sub _getShippableUnits {
ITEM: foreach my $item (@{$cart->getItems}) { ITEM: foreach my $item (@{$cart->getItems}) {
my $sku = $item->getSku; my $sku = $item->getSku;
next ITEM unless $sku->isShippingRequired; next ITEM unless $sku->isShippingRequired;
if ($sku->shipsSeparately) { if ($sku->isShippingSeparately) {
push @shippableUnits, [ $item ]; push @shippableUnits, [ $item ];
} }
else { else {

View file

@ -30,16 +30,18 @@ my $session = WebGUI::Test->session;
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Tests # Tests
plan tests => 21; # Increment this number for each test you create plan tests => 22; # Increment this number for each test you create
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# put your tests here # put your tests here
my $root = WebGUI::Asset->getRoot($session); my $root = WebGUI::Asset->getRoot($session);
warn "Make sku\n";
my $sku = $root->addChild({ my $sku = $root->addChild({
className=>"WebGUI::Asset::Sku", className=>"WebGUI::Asset::Sku",
title=>"Test Sku", title=>"Test Sku",
}); });
isa_ok($sku, "WebGUI::Asset::Sku"); isa_ok($sku, "WebGUI::Asset::Sku");
addToCleanup($sku);
$sku->addToCart; $sku->addToCart;
@ -64,13 +66,14 @@ is($sku->isRecurring, 0, "skus are not recurring by default");
is($sku->isShippingRequired, 0, "skus are not shippable by default"); is($sku->isShippingRequired, 0, "skus are not shippable by default");
is($sku->getConfiguredTitle, $sku->getTitle, "configured title and title should be the same by default"); is($sku->getConfiguredTitle, $sku->getTitle, "configured title and title should be the same by default");
is($sku->shipsSeparately, 0, 'shipsSeparately return 0 by default'); is($sku->shipsSeparately, 0, 'shipsSeparately return 0 by default');
is($sku->isShippingSeparately, 0, 'isShippingSeparately return 0 by default');
$sku->update({shipsSeparately => 1,}); $sku->shipsSeparately(1);
is($sku->shipsSeparately, 0, 'shipsSeparately only returns true when isShippingRequired AND shipsSeparately'); is($sku->isShippingSeparately, 0, 'isShippingSeparately only returns true when isShippingRequired AND shipsSeparately');
{ {
local *WebGUI::Asset::Sku::isShippingRequired = sub { return 1}; local *WebGUI::Asset::Sku::isShippingRequired = sub { return 1};
is($sku->shipsSeparately, 1, 'shipsSeparately only returns true when isShippingRequired AND shipsSeparately'); is($sku->isShippingSeparately, 1, 'isShippingSeparately only returns true when isShippingRequired AND shipsSeparately');
} }
ok(! $sku->isShippingRequired, 'Making sure that GLOB is no longer in effect'); ok(! $sku->isShippingRequired, 'Making sure that GLOB is no longer in effect');
@ -82,13 +85,3 @@ $item->cart->delete;
my $loadSku = WebGUI::Asset::Sku->newBySku($session, $sku->get("sku")); my $loadSku = WebGUI::Asset::Sku->newBySku($session, $sku->get("sku"));
is($loadSku->getId, $sku->getId, "newBySku() works."); is($loadSku->getId, $sku->getId, "newBySku() works.");
#----------------------------------------------------------------------------
# Cleanup
END {
$sku->purge;
}
1;