Packages used in upgrades get installed regardless of revisionDate. Fixes bug #11059

This commit is contained in:
Colin Kuskie 2009-09-29 11:51:35 -07:00
parent aad5f55601
commit 270ecb948f
4 changed files with 41 additions and 5 deletions

View file

@ -18,6 +18,7 @@
- fixed #10988: EMS Schedule -- Data Error - fixed #10988: EMS Schedule -- Data Error
- fixed: DataForm allows edits when locked by another version tag - fixed: DataForm allows edits when locked by another version tag
- fixed #11001: Shipping plugin returning nothing, causing price formatter to puke - fixed #11001: Shipping plugin returning nothing, causing price formatter to puke
- fixed #11059: WebGUI upgrade packages do not overwrite versions in the db
7.8.0 7.8.0
- upgraded YUI to 2.8.0r4 - upgraded YUI to 2.8.0r4

View file

@ -58,7 +58,7 @@ sub addPackage {
$storage->addFileFromFilesystem( $file ); $storage->addFileFromFilesystem( $file );
# Import the package into the import node # Import the package into the import node
my $package = eval { WebGUI::Asset->getImportNode($session)->importPackage( $storage ); }; my $package = eval { WebGUI::Asset->getImportNode($session)->importPackage( $storage, { overwriteLatest => 1 } ); };
if ($package eq 'corrupt') { if ($package eq 'corrupt') {
die "Corrupt package found in $file. Stopping upgrade.\n"; die "Corrupt package found in $file. Stopping upgrade.\n";

View file

@ -123,6 +123,11 @@ A hash reference of options to change how the import works
Forces the all assets in the package to inherit ownerUserId, groupIdView and groupIdEdit Forces the all assets in the package to inherit ownerUserId, groupIdView and groupIdEdit
from the asset where it is deployed. from the asset where it is deployed.
=head4 overwriteLatest
Forces the package to ignore the revisionDate inside it. This makes the imported package the
latest revision of an asset.
=cut =cut
sub importAssetData { sub importAssetData {
@ -132,7 +137,7 @@ sub importAssetData {
my $error = $self->session->errorHandler; my $error = $self->session->errorHandler;
my $id = $data->{properties}{assetId}; my $id = $data->{properties}{assetId};
my $class = $data->{properties}{className}; my $class = $data->{properties}{className};
my $version = $data->{properties}{revisionDate}; my $version = $options->{overwriteLatest} ? 0 : $data->{properties}{revisionDate};
# Load the class # Load the class
WebGUI::Asset->loadModule( $self->session, $class ); WebGUI::Asset->loadModule( $self->session, $class );

View file

@ -23,7 +23,7 @@ use WebGUI::VersionTag;
use Test::More; # increment this value for each test you create use Test::More; # increment this value for each test you create
use Test::MockObject; use Test::MockObject;
plan tests => 10; plan tests => 14;
my $session = WebGUI::Test->session; my $session = WebGUI::Test->session;
$session->user({userId => 3}); $session->user({userId => 3});
@ -50,7 +50,7 @@ my $targetFolder = $root->addChild({
className => 'WebGUI::Asset::Wobject::Folder', className => 'WebGUI::Asset::Wobject::Folder',
}); });
my $snippet = $folder->addChild({ my $subSnippet = $folder->addChild({
url => 'testSnippet', url => 'testSnippet',
title => 'snippet', title => 'snippet',
menuTitle => 'snippetMenuTitle', menuTitle => 'snippetMenuTitle',
@ -58,6 +58,14 @@ my $snippet = $folder->addChild({
snippet => 'A snippet of text', snippet => 'A snippet of text',
}); });
my $snippet = $root->addChild({
url => 'snip_snip',
title => 'snip snip',
className => 'WebGUI::Asset::Snippet',
snippet => 'Always upgrade to the latest version',
isPackage => 1,
});
my $packageAssetId = $folder->getId; my $packageAssetId = $folder->getId;
$session->request->setup_body({ assetId => $packageAssetId }); $session->request->setup_body({ assetId => $packageAssetId });
@ -69,6 +77,17 @@ $versionTag->commit;
sleep 2; sleep 2;
my $storage = $snippet->exportPackage();
isa_ok($storage, 'WebGUI::Storage', 'exportPackage returns a WebGUI::Storage object');
my $snippetRev = $snippet->addRevision({ snippet => 'Only upgrade existing data if revisionDate is newer' });
is($snippetRev->get('snippet'), 'Only upgrade existing data if revisionDate is newer', 'importPackage, overwriteLatest: precondition check, content');
cmp_ok( $snippetRev->get('revisionDate'), '>', $snippet->get('revisionDate'), '... precondition check, revisionDate');
my $vt2 = WebGUI::VersionTag->getWorking($session);
$vt2->commit;
WebGUI::Test->tagsToRollback($vt2);
$targetFolder->www_deployPackage(); $targetFolder->www_deployPackage();
$targetFolderChildren = $targetFolder->getLineage(["children"], {returnObjects => 1,}); $targetFolderChildren = $targetFolder->getLineage(["children"], {returnObjects => 1,});
@ -93,7 +112,18 @@ $newVersionTag->commit;
my $newFolder = WebGUI::Asset->new($session, $folder->getId); my $newFolder = WebGUI::Asset->new($session, $folder->getId);
ok(! $newFolder->get('isPackage'), 'Disabled isPackage in original folder asset'); ok(! $newFolder->get('isPackage'), 'Disabled isPackage in original folder asset');
is(scalar @{ $root->getPackageList }, 0, 'getPackageList does not pick up old versions of assets that used to be packages');
sleep 1;
my $updatedSnippet = WebGUI::Asset->new($session, $snippet->getId);
$root->importPackage($storage, { overwriteLatest => 1 });
$updatedSnippet = WebGUI::Asset->new($session, $snippet->getId);
is($updatedSnippet->get('snippet'), 'Always upgrade to the latest version', 'importPackage: overwriteLatest causes revision dates to be ignored');
cmp_ok( $updatedSnippet->get('revisionDate'), '>', $snippetRev->get('revisionDate'), '... revisionDate check on imported package with overwriteLatest');
my $lastTag = WebGUI::VersionTag->getWorking($session);
WebGUI::Test->tagsToRollback($lastTag);
TODO: { TODO: {
local $TODO = "Tests to make later"; local $TODO = "Tests to make later";