Convert variants over to the new collateral API.
Convert the upgrade script to the new API. Fix a few bugs in the collateral API with "empty" collateral Ids and add tests for it.
This commit is contained in:
parent
d8f12c4c9f
commit
affd08990a
3 changed files with 36 additions and 24 deletions
|
|
@ -808,7 +808,7 @@ EOSQL1
|
||||||
##Truncate title to 30 chars for short desc
|
##Truncate title to 30 chars for short desc
|
||||||
#printf "\t\tAdding variant to %s\n", $productData->{title} unless $quiet;
|
#printf "\t\tAdding variant to %s\n", $productData->{title} unless $quiet;
|
||||||
my $product = WebGUI::Asset::Sku::Product->new($session, $productData->{assetId}, 'WebGUI::Asset::Sku::Product', $productData->{revisionDate});
|
my $product = WebGUI::Asset::Sku::Product->new($session, $productData->{assetId}, 'WebGUI::Asset::Sku::Product', $productData->{revisionDate});
|
||||||
$product->setCollateral('variantsJSON', 'new', {
|
$product->setCollateral('variantsJSON', 'variantId', 'new', {
|
||||||
varSku => ($productData->{productNumber} || $session->id->generate),
|
varSku => ($productData->{productNumber} || $session->id->generate),
|
||||||
shortdesc => substr($productData->{title}, 0, 30),
|
shortdesc => substr($productData->{title}, 0, 30),
|
||||||
price => $productData->{price},
|
price => $productData->{price},
|
||||||
|
|
@ -965,7 +965,7 @@ sub mergeProductsWithCommerce {
|
||||||
$variant->{weight} = $variantData->{weight};
|
$variant->{weight} = $variantData->{weight};
|
||||||
$variant->{quantity} = $variantData->{available};
|
$variant->{quantity} = $variantData->{available};
|
||||||
$variant->{shortdesc} = $shortdesc;
|
$variant->{shortdesc} = $shortdesc;
|
||||||
$sku->setCollateral('variantsJSON', 'new', $variant);
|
$sku->setCollateral('variantsJSON', 'variantId', 'new', $variant);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$productSth->finish;
|
$productSth->finish;
|
||||||
|
|
|
||||||
|
|
@ -671,7 +671,9 @@ sub setCollateral {
|
||||||
##the object cache directly.
|
##the object cache directly.
|
||||||
my $table = $self->getAllCollateral($tableName);
|
my $table = $self->getAllCollateral($tableName);
|
||||||
if ($keyValue eq 'new' || $keyValue eq '') {
|
if ($keyValue eq 'new' || $keyValue eq '') {
|
||||||
if (! exists $properties->{$keyName} or $properties->{$keyName} eq 'new') {
|
if (! exists $properties->{$keyName}
|
||||||
|
or $properties->{$keyName} eq 'new'
|
||||||
|
or $properties->{$keyName} eq '') {
|
||||||
$properties->{$keyName} = $self->session->id->generate;
|
$properties->{$keyName} = $self->session->id->generate;
|
||||||
}
|
}
|
||||||
push @{ $table }, $properties;
|
push @{ $table }, $properties;
|
||||||
|
|
@ -893,7 +895,7 @@ sub www_deleteRelatedConfirm {
|
||||||
sub www_deleteVariantConfirm {
|
sub www_deleteVariantConfirm {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
||||||
$self->deleteCollateral('variantsJSON', $self->session->form->process('vid'));
|
$self->deleteCollateral('variantsJSON', 'variantId', $self->session->form->process('vid'));
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1076,11 +1078,11 @@ sub www_editVariant {
|
||||||
my $vid = shift || $self->session->form->process("vid");
|
my $vid = shift || $self->session->form->process("vid");
|
||||||
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
||||||
my $i18n = WebGUI::International->new($self->session,'Asset_Product');
|
my $i18n = WebGUI::International->new($self->session,'Asset_Product');
|
||||||
my $data = $self->getCollateral("variantsJSON", $vid);
|
my $data = $self->getCollateral("variantsJSON", 'variantId', $vid);
|
||||||
my $f = WebGUI::HTMLForm->new($self->session, -action=>$self->getUrl);
|
my $f = WebGUI::HTMLForm->new($self->session, -action=>$self->getUrl);
|
||||||
$f->hidden(
|
$f->hidden(
|
||||||
-name => 'func',
|
-name => 'func',
|
||||||
-value => "editVariantSave",
|
-value => 'editVariantSave',
|
||||||
);
|
);
|
||||||
$f->hidden(
|
$f->hidden(
|
||||||
-name => 'vid',
|
-name => 'vid',
|
||||||
|
|
@ -1130,14 +1132,20 @@ sub www_editVariant {
|
||||||
sub www_editVariantSave {
|
sub www_editVariantSave {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
||||||
##Mandatory variable check
|
my $vid = $self->session->form->process('vid', 'text');
|
||||||
$self->setCollateral('variantsJSON', $self->session->form->process('vid'), {
|
$self->setCollateral(
|
||||||
varSku => $self->session->form->process('varSku', 'text'),
|
'variantsJSON',
|
||||||
shortdesc => $self->session->form->process('shortdesc', 'text'),
|
'variantId',
|
||||||
price => $self->session->form->process('price', 'float'),
|
$vid,
|
||||||
weight => $self->session->form->process('weight', 'float'),
|
{
|
||||||
quantity => $self->session->form->process('quantity', 'integer'),
|
variantId => $vid,
|
||||||
});
|
varSku => $self->session->form->process('varSku', 'text'),
|
||||||
|
shortdesc => $self->session->form->process('shortdesc', 'text'),
|
||||||
|
price => $self->session->form->process('price', 'float'),
|
||||||
|
weight => $self->session->form->process('weight', 'float'),
|
||||||
|
quantity => $self->session->form->process('quantity', 'integer'),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return $self->www_view unless($self->session->form->process('proceed'));
|
return $self->www_view unless($self->session->form->process('proceed'));
|
||||||
return $self->www_editVariant('new');
|
return $self->www_editVariant('new');
|
||||||
|
|
@ -1227,16 +1235,16 @@ sub www_moveSpecificationUp {
|
||||||
sub www_moveVariantDown {
|
sub www_moveVariantDown {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
||||||
$self->moveCollateralDown("variantsJSON", $self->session->form->process("vid"));
|
$self->moveCollateralDown('variantsJSON', 'variantId', $self->session->form->process('vid'));
|
||||||
return "";
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_moveVariantUp {
|
sub www_moveVariantUp {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
return $self->session->privilege->insufficient() unless ($self->canEdit);
|
||||||
$self->moveCollateralUp("variantsJSON", $self->session->form->process("vid"));
|
$self->moveCollateralUp('variantsJSON', 'variantId', $self->session->form->process('vid'));
|
||||||
return "";
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
@ -1388,7 +1396,7 @@ sub view {
|
||||||
my %variants = ();
|
my %variants = ();
|
||||||
tie %variants, 'Tie::IxHash';
|
tie %variants, 'Tie::IxHash';
|
||||||
foreach my $collateral ( @{ $self->getAllCollateral('variantsJSON')} ) {
|
foreach my $collateral ( @{ $self->getAllCollateral('variantsJSON')} ) {
|
||||||
my $id = $collateral->{collateralIndex};
|
my $id = $collateral->{variantId};
|
||||||
$segment = $self->session->icon->delete('func=deleteVariantConfirm&vid='.$id,$self->get('url'),$i18n->get('delete variant confirm'))
|
$segment = $self->session->icon->delete('func=deleteVariantConfirm&vid='.$id,$self->get('url'),$i18n->get('delete variant confirm'))
|
||||||
. $self->session->icon->edit('func=editVariant&vid='.$id,$self->get('url'))
|
. $self->session->icon->edit('func=editVariant&vid='.$id,$self->get('url'))
|
||||||
. $self->session->icon->moveUp('func=moveVariantUp&vid='.$id,$self->get('url'))
|
. $self->session->icon->moveUp('func=moveVariantUp&vid='.$id,$self->get('url'))
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ my $session = WebGUI::Test->session;
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Tests
|
# Tests
|
||||||
|
|
||||||
plan tests => 29; # Increment this number for each test you create
|
plan tests => 32; # Increment this number for each test you create
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# put your tests here
|
# put your tests here
|
||||||
|
|
@ -50,6 +50,7 @@ ok(! exists $product->{_collateral}, 'object cache does not exist yet');
|
||||||
my $vid = $product->setCollateral('variantsJSON', 'vid', 'new', {a => 'aye', b => 'bee'});
|
my $vid = $product->setCollateral('variantsJSON', 'vid', 'new', {a => 'aye', b => 'bee'});
|
||||||
|
|
||||||
isa_ok($product->{_collateral}, 'HASH', 'object cache created for collateral');
|
isa_ok($product->{_collateral}, 'HASH', 'object cache created for collateral');
|
||||||
|
isnt($vid, 'new', 'setCollateral assigns a new id to collateral without one');
|
||||||
ok($session->id->valid($vid), 'a valid id was generated for the new collateral entry');
|
ok($session->id->valid($vid), 'a valid id was generated for the new collateral entry');
|
||||||
|
|
||||||
my $json;
|
my $json;
|
||||||
|
|
@ -267,11 +268,14 @@ my $product4 = $root->addChild({
|
||||||
title => "Pinch a loaf",
|
title => "Pinch a loaf",
|
||||||
});
|
});
|
||||||
|
|
||||||
my $bareVid = $product4->setCollateral('variantsJSON', 'vid', 'new', { major => 'problem' });
|
my $newVid;
|
||||||
isnt($bareVid, 'new', 'setCollateral assigns a new id to collateral without one');
|
$newVid = $product4->setCollateral('variantsJSON', 'vid', 'new', { major => 'problem', vid => 'new' });
|
||||||
|
isnt($newVid, 'new', 'setCollateral assigns a new id to collateral with an id of "new"...');
|
||||||
|
ok($session->id->valid($newVid), '... and it is a valid GUID');
|
||||||
|
|
||||||
my $newVid = $product4->setCollateral('variantsJSON', 'vid', 'new', { major => 'problem', vid => 'new' });
|
$newVid = $product4->setCollateral('variantsJSON', 'vid', 'new', { major => 'problem', vid => '' });
|
||||||
isnt($newVid, 'new', 'setCollateral assigns a new id to collateral with an id of "new"');
|
isnt($newVid, 'new', 'setCollateral assigns a new id to collateral with an id of ""');
|
||||||
|
ok($session->id->valid($newVid), '... and it is a valid GUID');
|
||||||
|
|
||||||
$product4->purge;
|
$product4->purge;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue