diff --git a/lib/WebGUI/Asset/Sku/Product.pm b/lib/WebGUI/Asset/Sku/Product.pm index b8e269e83..f9e7de242 100644 --- a/lib/WebGUI/Asset/Sku/Product.pm +++ b/lib/WebGUI/Asset/Sku/Product.pm @@ -1237,28 +1237,28 @@ sub www_editFeature { return $self->session->privilege->insufficient() unless ($self->canEdit); my $data = $self->getCollateral('featureJSON', 'featureId', $fid); my $i18n = WebGUI::International->new($self->session,'Asset_Product'); - my $f = WebGUI::HTMLForm->new($self->session,-action=>$self->getUrl); - $f->hidden( - -name => 'fid', - -value => $fid, + my $f = WebGUI::FormBuilder->new($self->session,action=>$self->getUrl); + $f->addField( "hidden", + name => 'fid', + value => $fid, ); - $f->hidden( - -name => 'func', - -value => 'editFeatureSave', + $f->addField( "hidden", + name => 'func', + value => 'editFeatureSave', ); - $f->text( - -name => 'feature', - -label => $i18n->get(23), - -hoverHelp => $i18n->get('23 description'), - -value => $data->{feature}, + $f->addField( "text", + name => 'feature', + label => $i18n->get(23), + hoverHelp => $i18n->get('23 description'), + value => $data->{feature}, ); - $f->yesNo( - -name => 'proceed', - -label => $i18n->get(24), - -hoverHelp => $i18n->get('24 description'), + $f->addField( "yesNo", + name => 'proceed', + label => $i18n->get(24), + hoverHelp => $i18n->get('24 description'), ); - $f->submit; - return $self->getAdminConsole->render($f->print, 'product feature add/edit'); + $f->addField( "submit", name => "submit" ); + return $f->toHtml; } #------------------------------------------------------------------- diff --git a/t/Asset/Sku/Product.t b/t/Asset/Sku/Product.t index 2c41a0e3d..f6271f2f2 100644 --- a/t/Asset/Sku/Product.t +++ b/t/Asset/Sku/Product.t @@ -36,7 +36,7 @@ my $session = WebGUI::Test->session; #---------------------------------------------------------------------------- # Tests -plan tests => 40; # Increment this number for each test you create +plan tests => 49; # Increment this number for each test you create #---------------------------------------------------------------------------- # put your tests here @@ -296,3 +296,56 @@ cmp_deeply( ); +#---------------------------------------------------------------------------- +# editFeature +my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file ); +$mech->get_ok( '/' ); +$mech->session->user({ userId => 3 }); +$mech->get_ok( $product->getUrl( 'func=editFeature' ) ); + +$mech->submit_form_ok({ + fields => { + feature => 'One new feature', + proceed => 1, + }, +}, 'add one new feature'); + +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'featureJSON' ), + [ { feature => 'One new feature', featureId => ignore() } ], +); + +$mech->submit_form_ok({ + fields => { + feature => 'Two new feature', + proceed => 0, + }, +}, 'add one more new feature' ); + +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'featureJSON' ), + [ + { feature => 'One new feature', featureId => ignore() }, + { feature => 'Two new feature', featureId => ignore() }, + ], +); + +my $feature = $product->getAllCollateral( 'featureJSON' )->[0]; +$mech->get_ok( $product->getUrl( 'func=editFeature;fid=' . $feature->{featureId} ) ); + +$mech->submit_form_ok( { + fields => { + feature => 'One edited feature', + }, +}, 'edit an existing feature' ); +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'featureJSON' ), + [ + { feature => 'One edited feature', featureId => ignore() }, + { feature => 'Two new feature', featureId => ignore() }, + ], +); +