diff --git a/lib/WebGUI/Asset/Sku/Product.pm b/lib/WebGUI/Asset/Sku/Product.pm index 521f6ea2d..b109a565f 100644 --- a/lib/WebGUI/Asset/Sku/Product.pm +++ b/lib/WebGUI/Asset/Sku/Product.pm @@ -12,7 +12,7 @@ package WebGUI::Asset::Sku::Product; use strict; use Tie::IxHash; -use WebGUI::HTMLForm; +use WebGUI::FormBuilder; use WebGUI::Storage; use WebGUI::SQL; use JSON; @@ -879,10 +879,10 @@ the user to select them. sub www_addAccessory { my $self = shift; return $self->session->privilege->insufficient() unless ($self->canEdit); - my $f = WebGUI::HTMLForm->new($self->session,-action=>$self->getUrl); - $f->hidden( - -name => "func", - -value => "addAccessorySave", + my $f = WebGUI::FormBuilder->new($self->session,action=>$self->getUrl); + $f->addField( "hidden", + name => "func", + value => "addAccessorySave", ); ##Accessories are other Products. Give the user a list of Accessories that ##are not already used, nor itself. @@ -906,20 +906,20 @@ sub www_addAccessory { ); my $i18n = WebGUI::International->new($self->session,"Asset_Product"); - $f->selectBox( - -name => "accessoryAccessId", - -options => $accessory, - -label => $i18n->get(17), - -hoverHelp => $i18n->get('17 description'), + $f->addField( "selectBox", + name => "accessoryAccessId", + options => $accessory, + label => $i18n->get(17), + hoverHelp => $i18n->get('17 description'), ); - $f->yesNo( - -name => "proceed", - -label => $i18n->get(18), - -hoverHelp => $i18n->get('18 description'), + $f->addField( "yesNo", + name => "proceed", + label => $i18n->get(18), + hoverHelp => $i18n->get('18 description'), ); - $f->submit; + $f->addField( "submit" ); - return $self->getAdminConsole->render($f->print, "product accessory add/edit"); + return $f->toHtml; } #------------------------------------------------------------------- diff --git a/t/Asset/Sku/Product.t b/t/Asset/Sku/Product.t index 8417bb0d9..b930f760c 100644 --- a/t/Asset/Sku/Product.t +++ b/t/Asset/Sku/Product.t @@ -25,6 +25,7 @@ use WebGUI::Session; use WebGUI::Asset; use WebGUI::Asset::Sku::Product; use WebGUI::Storage; +use WebGUI::Test::Mechanize; use JSON; #---------------------------------------------------------------------------- @@ -35,7 +36,7 @@ my $session = WebGUI::Test->session; #---------------------------------------------------------------------------- # Tests -plan tests => 19; # Increment this number for each test you create +plan tests => 25; # Increment this number for each test you create #---------------------------------------------------------------------------- # put your tests here @@ -44,6 +45,7 @@ my $node = WebGUI::Asset->getRoot($session); my $product = WebGUI::Test->asset( className => "WebGUI::Asset::Sku::Product", title => "Rock Hammer", + groupIdEdit => 3, ); is($product->getThumbnailUrl(), '', 'Product with no image1 property returns the empty string'); @@ -173,3 +175,37 @@ cmp_deeply( }, 'brochure, warranty and manual vars are blank since their storages are empty' ); + +#---------------------------------------------------------------------------- +# addAccessory +my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file ); +$mech->get_ok( '/' ); +$mech->session->user({ userId => 3 }); +$mech->get_ok( $product->getUrl( 'func=addAccessory' ) ); + +$mech->submit_form_ok({ + fields => { + accessoryAccessId => $imagedProduct->getId, + proceed => 1, + }, +}, 'add imagedProduct as an accessory and add another'); + +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'accessoryJSON' ), + [ { accessoryAssetId => $imagedProduct->getId } ], +); + +$mech->submit_form_ok({ + fields => { + accessoryAccessId => $viewProduct->getId, + proceed => 0, + }, +}, 'add viewProduct and go back' ); + +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'accessoryJSON' ), + [ { accessoryAssetId => $imagedProduct->getId }, { accessoryAssetId => $viewProduct->getId } ], +); +