Add tests to cover fixId and one test for fixTitle.

Fix a bug where fixId would pass integers of any length.
This commit is contained in:
Colin Kuskie 2007-12-21 22:57:06 +00:00
parent 7be4f8ea82
commit 060dd85963
2 changed files with 92 additions and 9 deletions

View file

@ -20,11 +20,62 @@ use WebGUI::Asset::Wobject::Folder;
use WebGUI::AssetVersioning;
use WebGUI::VersionTag;
use Test::More tests => 48; # increment this value for each test you create
use Test::More;
use Test::MockObject;
my $session = WebGUI::Test->session;
my @fixIdTests = (
{
id => '0',
pass => 1,
comment => 'digit zero',
},
{
id => '1',
pass => 1,
comment => 'digit one',
},
{
id => '123',
pass => 1,
comment => '3 digit integer',
},
{
id => '12345678901'x2,
pass => 1,
comment => '22 digit integer',
},
{
id => '12345678901'x4,
pass => 0,
comment => '44 digit integer',
},
{
id => '',
pass => 0,
comment => 'null string is rejected',
},
{
id => 'a',
pass => 0,
comment => 'single lower case character rejected',
},
{
# '1234567890123456789012'
id => 'abc123ZYX098deadbeef()',
pass => 0,
comment => 'illegal characters in length 22 string rejected',
},
{
id => $session->id->generate,
pass => 1,
comment => 'valid id accepted',
},
);
plan tests => 50 + scalar(@fixIdTests);
# Test the default constructor
my $defaultAsset = WebGUI::Asset->getDefault($session);
is(ref $defaultAsset, 'WebGUI::Asset::Wobject::Layout','default constructor');
@ -118,9 +169,12 @@ $deadAsset = WebGUI::Asset->newByDynamicClass($session, 'RoysNonExistantAssetId'
is ($deadAsset, undef,'newByDynamicClass constructor with invalid assetId returns undef');
# -- no assetId
$deadAsset = 1;
$deadAsset = WebGUI::Asset->newByDynamicClass($session);
is ($deadAsset, undef, 'newByDynamicClass constructor with no assetId returns undef');
{
my $confession = '';
local $SIG{__DIE__} = sub { $confession = $_[0]; };
eval { WebGUI::Asset->newByDynamicClass($session); };
like($confession, qr/newByDynamicClass requires assetId/, 'newByDynamicClass constructor with no assetId confesses and dies');
}
# Root Asset
my $rootAsset = WebGUI::Asset->getRoot($session);
@ -234,10 +288,37 @@ is($importNode->fixUrl('fixUrlFolderURL100'), 'fixurlfolderurl101', '100->101');
is($fixUrlAsset5->fixUrl(), 'home/fix-url-folder-url-autogenerated', 'fixUrl will autogenerate a url if not provided one');
$session->setting->set('urlExtension', 'html');
TODO: {
local $TODO = "Test the automatic adding of extensions to URLs";
$session->setting->set('urlExtension', 'html');
ok(0, "Setup test for adding URL extensions");
$session->setting->set('urlExtension', $origUrlExtension);
}
################################################################
#
# fixId
#
################################################################
my $ownerUserId = $importNode->getValue('ownerUserId');
foreach my $test (@fixIdTests) {
my $fixedId = $importNode->fixId($test->{id}, 'ownerUserId');
my $expectedId = $test->{pass} ? $test->{id} : $ownerUserId;
is($fixedId, $expectedId, $test->{comment});
}
################################################################
#
# fixTitle
#
################################################################
is($importNode->fixTitle(), 'Import Node', 'fixTitle: returns the title of the asset on "empty" titles');
END: {
$session->config->set('extrasURL', $origExtras);
$session->config->set('uploadsURL', $origUploads);
$session->setting->set('urlExtension', $origUrlExtension);