diff --git a/lib/WebGUI/Asset/Sku/Product.pm b/lib/WebGUI/Asset/Sku/Product.pm index f9e7de242..3ba9cab58 100644 --- a/lib/WebGUI/Asset/Sku/Product.pm +++ b/lib/WebGUI/Asset/Sku/Product.pm @@ -1301,41 +1301,41 @@ sub www_editSpecification { my $i18n = WebGUI::International->new($self->session,'Asset_Product'); my $data = $self->getCollateral('specificationJSON', 'specificationId', $sid); - my $f = WebGUI::HTMLForm->new($self->session,-action=>$self->getUrl); + my $f = WebGUI::FormBuilder->new($self->session,action=>$self->getUrl); - $f->hidden( - -name => 'sid', - -value => $sid, + $f->addField( "hidden", + name => 'sid', + value => $sid, ); - $f->hidden( - -name => 'func', - -value => 'editSpecificationSave', + $f->addField( "hidden", + name => 'func', + value => 'editSpecificationSave', ); - $f->text( - -name => 'name', - -label => $i18n->get(26), - -hoverHelp => $i18n->get('26 description'), - -value => $data->{name}, + $f->addField( "text", + name => 'name', + label => $i18n->get(26), + hoverHelp => $i18n->get('26 description'), + value => $data->{name}, ); - $f->text( - -name => 'value', - -label => $i18n->get(27), - -hoverHelp => $i18n->get('27 description'), - -value => $data->{value}, + $f->addField( "text", + name => 'value', + label => $i18n->get(27), + hoverHelp => $i18n->get('27 description'), + value => $data->{value}, ); - $f->text( - -name => 'units', - -label => $i18n->get(29), - -hoverHelp => $i18n->get('29 description'), - -value => $data->{units}, + $f->addField( "text", + name => 'units', + label => $i18n->get(29), + hoverHelp => $i18n->get('29 description'), + value => $data->{units}, ); - $f->yesNo( - -name => 'proceed', - -label => $i18n->get(28), - -hoverHelp => $i18n->get('28 description'), + $f->addField( "yesNo", + name => 'proceed', + label => $i18n->get(28), + hoverHelp => $i18n->get('28 description'), ); - $f->submit; - return $self->getAdminConsole->render($f->print, 'product specification 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 f6271f2f2..0bb64ecee 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 => 49; # Increment this number for each test you create +plan tests => 58; # Increment this number for each test you create #---------------------------------------------------------------------------- # put your tests here @@ -349,3 +349,65 @@ cmp_deeply( ], ); + +#---------------------------------------------------------------------------- +# editSpecification +my $mech = WebGUI::Test::Mechanize->new( config => WebGUI::Test->file ); +$mech->get_ok( '/' ); +$mech->session->user({ userId => 3 }); +$mech->get_ok( $product->getUrl( 'func=editSpecification' ) ); + +$mech->submit_form_ok({ + fields => { + name => "One", + value => "1", + units => "Oneitude", + proceed => 1, + }, +}, 'add one new specification'); + +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'specificationJSON' ), + [ + { name => "One", value => "1", units => "Oneitude", specificationId => ignore(), }, + ], +); + +$mech->submit_form_ok({ + fields => { + name => "Cold", + value => "2", + units => "Colditude", + proceed => 0, + }, +}, 'add one more new feature' ); + +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'specificationJSON' ), + [ + { name => "One", value => "1", units => "Oneitude", specificationId => ignore(), }, + { name => "Cold", value => "2", units => "Colditude", specificationId => ignore(), }, + ], +); + +my $spec = $product->getAllCollateral( 'specificationJSON' )->[0]; +$mech->get_ok( $product->getUrl( 'func=editSpecification;sid=' . $spec->{specificationId} ) ); + +$mech->submit_form_ok( { + fields => { + name => "Oneitude", + value => "3", + units => "Ones", + }, +}, 'edit an existing specification' ); +$product = $product->cloneFromDb; +cmp_deeply( + $product->getAllCollateral( 'specificationJSON' ), + [ + { name => "Oneitude", value => "3", units => "Ones", specificationId => $spec->{specificationId}, }, + { name => "Cold", value => "2", units => "Colditude", specificationId => ignore(), }, + ], +); +