webgui/t/Shop/loadProducts.pl

188 lines
5.6 KiB
Perl

# vim:syntax=perl
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#------------------------------------------------------------------
# This "test" script shoves products into the table so that the upgrade translation
# process can be tested.
#
# Here's what we're looking for after the upgrade runs.
# 1) Correct number of products translated
# 2) All revisions translated
# 3) Variants created for each Product Wobject
# 4) If no productNumber is defined, then it makes one for you.
# 5) Titles are truncated to 30 characters and used as the short description
#
use FindBin;
use strict;
use lib "$FindBin::Bin/../lib";
use Test::More qw(no_plan);
use WebGUI::Test; # Must use this before any other WebGUI modules
use WebGUI::Session;
use WebGUI::Shop::Tax;
use WebGUI::Asset::Wobject::Product;
use WebGUI::VersionTag;
#----------------------------------------------------------------------------
# Init
my $session = WebGUI::Test->session;
#----------------------------------------------------------------------------
# put your tests here
##Create products by hand
my $tag = WebGUI::VersionTag->getWorking($session);
my $properties1 = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'one',
price => 10.00,
productNumber => '#1',
title => 'product 1',
description => 'First product',
};
my $root = WebGUI::Asset->getRoot($session);
my $product1 = $root->addChild($properties1);
note ref $product1;
my $properties2 = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'two',
price => 20.00,
productNumber => '#2',
title => 'product 2',
description => 'Second product',
};
my $product2 = $root->addChild($properties2);
note ref $product2;
$tag->commit;
sleep 2;
$tag = WebGUI::VersionTag->getWorking($session);
my $product1a = $product1->addRevision({price => 11.11});
my $properties3 = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'three',
price => 20.00,
title => 'no product number',
description => 'third product',
};
my $product3 = $root->addChild($properties3);
my $properties4 = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'four',
price => 7.77,
description => 'no title',
};
my $product4 = $root->addChild($properties4);
my $properties5 = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'five',
price => 7.77,
title => 'extremely long title that will be truncated to only 30 chars in the variant',
description => 'fourth product',
};
my $product5 = $root->addChild($properties5);
my $propertiesa = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'accessory Product',
price => 1.00,
title => 'accessory Product',
description => 'accessory Product',
};
my $producta = $root->addChild($propertiesa);
$session->db->write('insert into Product_accessory (assetId, accessoryAssetId, sequenceNumber) values (?,?,?)', [$producta->getId, $product5->getId, 1]);
$session->db->write('insert into Product_accessory (assetId, accessoryAssetId, sequenceNumber) values (?,?,?)', [$producta->getId, $product4->getId, 2]);
my $propertiesr = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'related_Product',
price => 2.00,
title => 'related Product',
description => 'related Product',
};
my $productr = $root->addChild($propertiesr);
$session->db->write('insert into Product_related (assetId, relatedAssetId, sequenceNumber) values (?,?,?)', [$productr->getId, $product4->getId, 1]);
$session->db->write('insert into Product_related (assetId, relatedAssetId, sequenceNumber) values (?,?,?)', [$productr->getId, $product5->getId, 2]);
my $propertiess = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'specification_Product',
price => 3.33,
title => 'specification Product',
description => 'specification Product',
};
my $products = $root->addChild($propertiess);
$products->setCollateral('Product_specification', 'Product_specificationId', {
name => 'pitch',
value => '440',
units => 'Hertz',
});
my $propertiesf = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'feature_Product',
price => 3.33,
title => 'feature Product',
description => 'feature Product',
};
my $productf = $root->addChild($propertiesf);
$productf->setCollateral('Product_feature', 'Product_featureId', {
feature => 'leather interior',
});
$productf->setCollateral('Product_feature', 'Product_featureId', {
feature => '25% less code',
});
my $propertiesb = {
className => 'WebGUI::Asset::Wobject::Product',
url => 'benefit_Product',
price => 4.44,
title => 'benefit Product',
description => 'benefit Product',
};
my $productb = $root->addChild($propertiesb);
$productb->setCollateral('Product_benefit', 'Product_benefitId', {
benefit => 'holds mixed nuts',
});
$productb->setCollateral('Product_benefit', 'Product_benefitId', {
benefit => 'automatic sodium monitoring',
});
$tag->commit;
note "Done.";