Packages used in upgrades get installed regardless of revisionDate. Fixes bug #11059
This commit is contained in:
parent
aad5f55601
commit
270ecb948f
4 changed files with 41 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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 );
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue