128 lines
4.1 KiB
Perl
128 lines
4.1 KiB
Perl
#-------------------------------------------------------------------
|
|
# WebGUI is Copyright 2001-2012 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;
|
|
use WebGUI::Test;
|
|
use WebGUI::Session;
|
|
use WebGUI::Keyword;
|
|
use WebGUI::Asset;
|
|
# load your modules here
|
|
|
|
use Test::More tests => 17; # increment this value for each test you create
|
|
use Test::Deep;
|
|
use Data::Dumper;
|
|
|
|
my $session = WebGUI::Test->session;
|
|
|
|
# put your tests here
|
|
my $tag = WebGUI::VersionTag->getWorking($session);
|
|
my $home = WebGUI::Test->asset;
|
|
$tag->commit;
|
|
$home = $home->cloneFromDb;
|
|
|
|
isa_ok($home, "WebGUI::Asset");
|
|
my $keyword = WebGUI::Keyword->new($session);
|
|
isa_ok($keyword, "WebGUI::Keyword");
|
|
|
|
$keyword->setKeywordsForAsset({ asset=>$home, keywords=>"test key, word, foo & bar"});
|
|
my ($count) = $session->db->quickArray("select count(*) from assetKeyword where assetId=?", [$home->getId]);
|
|
is($count, 3, "setKeywordsForAsset() create");
|
|
cmp_bag(
|
|
$keyword->getKeywordsForAsset({ asset => $home, asArrayRef => 1}),
|
|
['test key', 'word', 'foo & bar'],
|
|
'... check correct keywords set, returns array ref'
|
|
);
|
|
|
|
my $keywords = $keyword->getKeywordsForAsset({ asset => $home, });
|
|
my @keywords = split ',\s*', $keywords;
|
|
cmp_bag(
|
|
\@keywords,
|
|
['test key', 'word', 'foo & bar'],
|
|
'... check correct keywords set, returns string'
|
|
);
|
|
|
|
my $cloud = $keyword->generateCloud(
|
|
{
|
|
startAsset => $home,
|
|
displayFunc => 'view',
|
|
}
|
|
);
|
|
my $url = $session->url->escape('foo & bar');
|
|
like($cloud, qr/\Q$url\E/, 'escaped urls in generateCloud');
|
|
|
|
$keyword->setKeywordsForAsset({ asset=>$home, keywords=>"webgui, rules"});
|
|
my ($count) = $session->db->quickArray("select count(*) from assetKeyword where assetId=?", [$home->getId]);
|
|
is($count, 2, "setKeywordsForAsset() update");
|
|
|
|
is(scalar(@{$keyword->getKeywordsForAsset({ asset=>$home, asArrayRef=>1})}), 2, "getKeywordsForAsset()");
|
|
|
|
like($keyword->generateCloud({startAsset=>$home, displayFunc=>"showKeyword" }), qr/rules/, "getLatestVersionNumber()");
|
|
|
|
$keyword->replaceKeyword({currentKeyword => "rules", newKeyword=>"owns"});
|
|
like($keyword->getKeywordsForAsset({asset=>$home }), qr/owns/, "getLatestVersionNumber()");
|
|
|
|
$keyword->deleteKeyword({keyword => "owns"});
|
|
unlike($keyword->getKeywordsForAsset({asset=>$home }), qr/owns/, "getLatestVersionNumber()");
|
|
|
|
my $snippet = $home->addChild({
|
|
className => 'WebGUI::Asset::Snippet',
|
|
title => 'keyword snippet',
|
|
snippet => 'keyword snippet',
|
|
keywords => 'webgui',
|
|
});
|
|
|
|
my $assetIds = $keyword->getMatchingAssets({ keyword => 'webgui', });
|
|
|
|
cmp_bag(
|
|
$assetIds,
|
|
[ $snippet->getId, $home->getId, ],
|
|
'getMatchingAssets, by keyword, assetIds in order by creationDate, descending'
|
|
);
|
|
|
|
# sorted by title, alphabetically
|
|
|
|
my $aa_story = $home->addChild({ className => 'WebGUI::Asset::Snippet', title => "aaaa", keywords => 'webgui' });
|
|
|
|
$assetIds = $keyword->getMatchingAssets({ keyword => 'webgui', sortOrder => 'Alphabetically', });
|
|
|
|
cmp_deeply(
|
|
$assetIds,
|
|
[ $aa_story->getId, $snippet->getId, $home->getId, ], # 'aaa', 'Home', 'keyword snippet'
|
|
'getMatchingAssets, by keyword, assetIds in order by title'
|
|
);
|
|
|
|
$aa_story->trash();
|
|
$aa_story->purge();
|
|
|
|
# trashed assets
|
|
|
|
$snippet->trash();
|
|
|
|
cmp_deeply(
|
|
$keyword->getMatchingAssets({ keyword => 'webgui', }),
|
|
[$home->getId, ],
|
|
'... only published assets'
|
|
);
|
|
|
|
cmp_bag(
|
|
$keyword->getMatchingAssets({ keyword => 'webgui', states => [ qw/published trash/, ]}),
|
|
[$snippet->getId, $home->getId, ],
|
|
'... retrieving assets in more than one state'
|
|
);
|
|
|
|
cmp_deeply(
|
|
$keyword->getTopKeywords(),
|
|
{ 'webgui' => '2' },
|
|
'check getTopKeywords returns correctly'
|
|
);
|
|
|
|
$keyword->deleteKeywordsForAsset($home);
|
|
is(scalar(@{$keyword->getKeywordsForAsset({ asset=>$home, asArrayRef=>1})}), 0, "getKeywordsForAsset()");
|
|
|