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: DataForm allows edits when locked by another version tag
- 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
- upgraded YUI to 2.8.0r4

View file

@ -58,7 +58,7 @@ sub addPackage {
$storage->addFileFromFilesystem( $file );
# 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') {
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
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
sub importAssetData {
@ -132,7 +137,7 @@ sub importAssetData {
my $error = $self->session->errorHandler;
my $id = $data->{properties}{assetId};
my $class = $data->{properties}{className};
my $version = $data->{properties}{revisionDate};
my $version = $options->{overwriteLatest} ? 0 : $data->{properties}{revisionDate};
# Load the 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::MockObject;
plan tests => 10;
plan tests => 14;
my $session = WebGUI::Test->session;
$session->user({userId => 3});
@ -50,7 +50,7 @@ my $targetFolder = $root->addChild({
className => 'WebGUI::Asset::Wobject::Folder',
});
my $snippet = $folder->addChild({
my $subSnippet = $folder->addChild({
url => 'testSnippet',
title => 'snippet',
menuTitle => 'snippetMenuTitle',
@ -58,6 +58,14 @@ my $snippet = $folder->addChild({
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;
$session->request->setup_body({ assetId => $packageAssetId });
@ -69,6 +77,17 @@ $versionTag->commit;
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();
$targetFolderChildren = $targetFolder->getLineage(["children"], {returnObjects => 1,});
@ -93,7 +112,18 @@ $newVersionTag->commit;
my $newFolder = WebGUI::Asset->new($session, $folder->getId);
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: {
local $TODO = "Tests to make later";