From 14724cbbefcd14021c3d9df37447b3c309dd4062 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 20 Jun 2008 22:05:47 +0000 Subject: [PATCH] Add tests to check how getThumbnailUrl is supposed to work in the Product. Then fix the bugs I added to it yesterday. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Sku/Product.pm | 24 ++++++++++++++++++++-- t/Asset/Sku/Product.t | 33 ++++++++++++++++++++++++++++-- t/Asset/Sku/ProductCollateral.t | 6 +++--- t/supporting_collateral/gooey.jpg | Bin 0 -> 22938 bytes 5 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 t/supporting_collateral/gooey.jpg diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index be3d06f5a..16ef4633b 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -9,6 +9,7 @@ - fixed: can now turn off inheritUrlFromParent and the code is now more robust, moved from Asset->update to Asset->fixUrl. - fixed: Time tracker can't post time once it's been posted. + - fixed: Shop: Product asset- image not showing 7.5.13 - fixed: storage locations for some assets in packages not imported correctly diff --git a/lib/WebGUI/Asset/Sku/Product.pm b/lib/WebGUI/Asset/Sku/Product.pm index 77512d6f3..782db2bdf 100644 --- a/lib/WebGUI/Asset/Sku/Product.pm +++ b/lib/WebGUI/Asset/Sku/Product.pm @@ -442,12 +442,32 @@ sub getQuantityAvailable { } #------------------------------------------------------------------- + +=head2 getThumbnailUrl ( [$store] ) + +Return a URL to the thumbnail for an image stored in this Product by creating +a WebGUI::Storage::Image object and calling its getThumbnailUrl method. + +=head3 $store + +This should be a WebGUI::Storage::Image object. If it is not defined, +then by default getThumbnailUrl will attempt to look up the URL for +the 'image1' property. + +If image1 is not defined for this Product and a separate storage object is not +sent in, it will return the empty string. + +=cut + sub getThumbnailUrl { my $self = shift; my $store = shift; - if (! defined $store and $self->get('image1')) { + if (defined $store) { + return $store->getThumbnailUrl($store->getFiles->[0]); + } + elsif ($self->get('image1')) { $store = WebGUI::Storage::Image->get($self->session, $self->get('image1')); - return $store->getThumbnailUrl($store->getFiles->[0]); + return $store->getThumbnailUrl($store->getFiles->[0]); } else { return ''; diff --git a/t/Asset/Sku/Product.t b/t/Asset/Sku/Product.t index 095b320b7..fce39fbbc 100644 --- a/t/Asset/Sku/Product.t +++ b/t/Asset/Sku/Product.t @@ -24,6 +24,7 @@ use WebGUI::Test; # Must use this before any other WebGUI modules use WebGUI::Session; use WebGUI::Asset; use WebGUI::Asset::Sku::Product; +use WebGUI::Storage::Image; #---------------------------------------------------------------------------- # Init @@ -33,7 +34,7 @@ my $session = WebGUI::Test->session; #---------------------------------------------------------------------------- # Tests -plan tests => 2; # Increment this number for each test you create +plan tests => 7; # Increment this number for each test you create #---------------------------------------------------------------------------- # put your tests here @@ -41,10 +42,38 @@ my $node = WebGUI::Asset::Sku::Product->getProductImportNode($session); isa_ok($node, 'WebGUI::Asset::Wobject::Folder', 'getProductImportNode returns a Folder'); is($node->getId, 'PBproductimportnode001', 'Product Import Node has the correct GUID'); +my $product = $node->addChild({ + className => "WebGUI::Asset::Sku::Product", + title => "Rock Hammer", +}); + +is($product->getThumbnailUrl(), '', 'Product with no image1 property returns the empty string'); + +my $image = WebGUI::Storage::Image->create($session); +$image->addFileFromFilesystem(WebGUI::Test->getTestCollateralPath('lamp.jpg')); + +my $imagedProduct = $node->addChild({ + className => "WebGUI::Asset::Sku::Product", + title => "Bible", + image1 => $image->getId, +}); + +ok($imagedProduct->getThumbnailUrl(), 'getThumbnailUrl is not empty'); +is($imagedProduct->getThumbnailUrl(), $image->getThumbnailUrl('lamp.jpg'), 'getThumbnailUrl returns the right path to the URL'); + +my $otherImage = WebGUI::Storage::Image->create($session); +$otherImage->addFileFromFilesystem(WebGUI::Test->getTestCollateralPath('gooey.jpg')); + +ok($imagedProduct->getThumbnailUrl($otherImage), 'getThumbnailUrl with an explicit storageId returns something'); +is($imagedProduct->getThumbnailUrl($otherImage), $otherImage->getThumbnailUrl('gooey.jpg'), 'getThumbnailUrl with an explicit storageId returns the right path to the URL'); + #---------------------------------------------------------------------------- # Cleanup END { - + $product->purge; + $imagedProduct->purge; + $image->delete; + $otherImage->delete; } 1; diff --git a/t/Asset/Sku/ProductCollateral.t b/t/Asset/Sku/ProductCollateral.t index 2789709aa..46f9508e1 100644 --- a/t/Asset/Sku/ProductCollateral.t +++ b/t/Asset/Sku/ProductCollateral.t @@ -41,9 +41,9 @@ plan tests => 33; # Increment this number for each test you create # put your tests here my $root = WebGUI::Asset->getRoot($session); my $product = $root->addChild({ - className => "WebGUI::Asset::Sku::Product", - title => "Rock Hammer", - }); + className => "WebGUI::Asset::Sku::Product", + title => "Rock Hammer", +}); isa_ok($product, "WebGUI::Asset::Sku::Product"); ok(! exists $product->{_collateral}, 'object cache does not exist yet'); diff --git a/t/supporting_collateral/gooey.jpg b/t/supporting_collateral/gooey.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a364a6aff803b6d6ce01e795ae68f50a7cdb00d GIT binary patch literal 22938 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