Conflicts: docs/gotcha.txt docs/previousVersion.sql docs/templates.txt lib/WebGUI.pm lib/WebGUI/Asset.pm lib/WebGUI/Asset/Event.pm lib/WebGUI/Asset/File.pm lib/WebGUI/Asset/MapPoint.pm lib/WebGUI/Asset/RichEdit.pm lib/WebGUI/Asset/Sku/Product.pm lib/WebGUI/Asset/Snippet.pm lib/WebGUI/Asset/Story.pm lib/WebGUI/Asset/Template.pm lib/WebGUI/Asset/Template/TemplateToolkit.pm lib/WebGUI/Asset/Wobject/Calendar.pm lib/WebGUI/Asset/Wobject/Carousel.pm lib/WebGUI/Asset/Wobject/Collaboration.pm lib/WebGUI/Asset/Wobject/Dashboard.pm lib/WebGUI/Asset/Wobject/DataForm.pm lib/WebGUI/Asset/Wobject/Folder.pm lib/WebGUI/Asset/Wobject/Map.pm lib/WebGUI/Asset/Wobject/Search.pm lib/WebGUI/Asset/Wobject/Shelf.pm lib/WebGUI/Asset/Wobject/StockData.pm lib/WebGUI/Asset/Wobject/StoryTopic.pm lib/WebGUI/Asset/Wobject/SyndicatedContent.pm lib/WebGUI/Asset/Wobject/Thingy.pm lib/WebGUI/Asset/Wobject/WeatherData.pm lib/WebGUI/AssetClipboard.pm lib/WebGUI/AssetCollateral/DataForm/Entry.pm lib/WebGUI/AssetExportHtml.pm lib/WebGUI/AssetLineage.pm lib/WebGUI/AssetMetaData.pm lib/WebGUI/AssetTrash.pm lib/WebGUI/AssetVersioning.pm lib/WebGUI/Auth.pm lib/WebGUI/Cache/CHI.pm lib/WebGUI/Content/AssetManager.pm lib/WebGUI/Fork/ProgressBar.pm lib/WebGUI/Form/JsonTable.pm lib/WebGUI/Form/TimeField.pm lib/WebGUI/Form/Zipcode.pm lib/WebGUI/Group.pm lib/WebGUI/International.pm lib/WebGUI/Macro/AssetProxy.pm lib/WebGUI/Macro/FileUrl.pm lib/WebGUI/Operation/SSO.pm lib/WebGUI/Operation/User.pm lib/WebGUI/Role/Asset/Subscribable.pm lib/WebGUI/Shop/Cart.pm lib/WebGUI/Shop/Transaction.pm lib/WebGUI/Shop/TransactionItem.pm lib/WebGUI/Test.pm lib/WebGUI/URL/Content.pm lib/WebGUI/URL/Uploads.pm lib/WebGUI/User.pm lib/WebGUI/Workflow/Activity/ExtendCalendarRecurrences.pm lib/WebGUI/Workflow/Activity/SendNewsletters.pm lib/WebGUI/i18n/English/Asset.pm lib/WebGUI/i18n/English/WebGUI.pm sbin/installClass.pl sbin/rebuildLineage.pl sbin/search.pl sbin/testEnvironment.pl t/Asset/Asset.t t/Asset/AssetClipboard.t t/Asset/AssetLineage.t t/Asset/AssetMetaData.t t/Asset/Event.t t/Asset/File.t t/Asset/File/Image.t t/Asset/Post/notification.t t/Asset/Sku.t t/Asset/Story.t t/Asset/Template.t t/Asset/Wobject/Collaboration/templateVariables.t t/Asset/Wobject/Collaboration/unarchiveAll.t t/Asset/Wobject/Shelf.t t/Auth.t t/Macro/EditableToggle.t t/Macro/FilePump.t t/Shop/Cart.t t/Shop/Transaction.t t/Storage.t t/User.t t/Workflow.t
163 lines
4.7 KiB
Perl
163 lines
4.7 KiB
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
|
|
#-------------------------------------------------------------------
|
|
|
|
use strict;
|
|
|
|
## The goal of this test is to test the link between the asset and its shortcut
|
|
# and that changes to the asset are propagated to the shortcut
|
|
|
|
use Scalar::Util qw( blessed );
|
|
use WebGUI::Test;
|
|
use WebGUI::Session;
|
|
use Test::More;
|
|
use WebGUI::Asset::Shortcut;
|
|
use WebGUI::Asset::Snippet;
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Init
|
|
my $session = WebGUI::Test->session;
|
|
|
|
my $snippet;
|
|
my $shortcut;
|
|
init();
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Tests
|
|
plan tests => 12;
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Test shortcut's link to original asset
|
|
my $original = $shortcut->getShortcut;
|
|
|
|
ok(
|
|
defined $original,
|
|
"Original asset is defined",
|
|
);
|
|
|
|
is(
|
|
Scalar::Util::blessed($original), Scalar::Util::blessed($snippet),
|
|
"Original asset class is correct",
|
|
);
|
|
|
|
is(
|
|
$original->getId, $snippet->getId,
|
|
"Original assetId is correct"
|
|
);
|
|
|
|
is_deeply(
|
|
[ $shortcut->getId ],
|
|
$original->exportGetRelatedAssetIds,
|
|
'shortcut is related for the purpose of exports',
|
|
);
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Test trashing snippet trashes shortcut also
|
|
$snippet->trash;
|
|
$shortcut = $shortcut->cloneFromDb();
|
|
|
|
ok(
|
|
defined $shortcut,
|
|
"Trash Linked Asset: Shortcut is defined",
|
|
);
|
|
|
|
like(
|
|
$shortcut->get("state"), qr/^trash/,
|
|
"Trash Linked Asset: Shortcut state is trash",
|
|
);
|
|
|
|
ok(
|
|
grep({ $_->getId eq $shortcut->getId } @{ $snippet->getAssetsInTrash }),
|
|
"Trash Linked Asset: Shortcut is in trash",
|
|
);
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Test restoring snippet restores shortcut also
|
|
$snippet->publish;
|
|
$shortcut = $shortcut->cloneFromDb();
|
|
|
|
ok(
|
|
defined $shortcut,
|
|
"Restore Linked Asset: Shortcut is defined",
|
|
);
|
|
|
|
ok(
|
|
!grep({ $_->getId eq $shortcut->getId } @{ $snippet->getAssetsInTrash }),
|
|
"Restore Linked Asset: Shortcut is not in trash",
|
|
);
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Test purging snippet but keeping shortcut doesn't cause
|
|
# getContentLastModified to generate an error; makes sure that
|
|
# http://www.webgui.org/use/bugs/tracker/11052 stays fixed.
|
|
$session->db->beginTransaction();
|
|
$session->db->write("delete from assetData where assetId = ?",
|
|
[$snippet->getId]);
|
|
$session->db->write("delete from asset where assetId = ?",
|
|
[$snippet->getId]);
|
|
$session->db->write("delete from snippet where assetId = ?",
|
|
[$snippet->getId]);
|
|
$session->db->commit();
|
|
|
|
my $contentLastModified;
|
|
eval {
|
|
$contentLastModified = $shortcut->getContentLastModified();
|
|
};
|
|
|
|
is(
|
|
$contentLastModified, undef,
|
|
"Purged Linked Asset: getContentLastModified returns 0 when linked asset missing",
|
|
);
|
|
|
|
# re-init so further tests will work
|
|
init();
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Test purging snippet purges shortcut also, even when they're both in the trash
|
|
|
|
# This will trash both the snippet and the shortcut (or else an earlier test failed)
|
|
$snippet->trash();
|
|
|
|
$snippet->purge();
|
|
$shortcut = eval { $shortcut->cloneFromDb(); };
|
|
|
|
ok(
|
|
Exception::Class->caught(),
|
|
"Purge Linked Asset: Shortcut is purged even though it's in the trash"
|
|
);
|
|
|
|
# re-init so further tests will work
|
|
init();
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Test purging snippet purges shortcut also
|
|
$snippet->purge;
|
|
$shortcut = eval { $shortcut->cloneFromDb(); };
|
|
|
|
ok(
|
|
Exception::Class->caught(),
|
|
"Purge Linked Asset: Shortcut is not defined",
|
|
);
|
|
|
|
#----------------------------------------------------------------------------
|
|
# init a new snippet and shortcut; handy to have in a sub because we destroy
|
|
# them in some tests and need to reset them for the next round
|
|
sub init {
|
|
# Make a snippet to shortcut
|
|
$snippet
|
|
= WebGUI::Test->asset(
|
|
className => "WebGUI::Asset::Snippet",
|
|
);
|
|
|
|
$shortcut
|
|
= WebGUI::Test->asset(
|
|
className => "WebGUI::Asset::Shortcut",
|
|
shortcutToAssetId => $snippet->getId,
|
|
);
|
|
}
|