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
179 lines
6 KiB
Perl
179 lines
6 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 creation of Search Wobjects.
|
|
|
|
use WebGUI::Test;
|
|
use WebGUI::Test::MockAsset;
|
|
use WebGUI::Session;
|
|
use Test::More tests => 13; # increment this value for each test you create
|
|
use Test::Deep;
|
|
use WebGUI::Asset::Wobject::Search;
|
|
use Data::Dumper;
|
|
|
|
my $session = WebGUI::Test->session;
|
|
|
|
# Do our work in the import node
|
|
my $node = WebGUI::Asset->getDefault($session);
|
|
|
|
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
|
$versionTag->set({name=>"Search Test"});
|
|
my %tag = ( tagId => $versionTag->getId, status => "pending" );
|
|
WebGUI::Test->addToCleanup($versionTag);
|
|
my $search = $node->addChild({className=>'WebGUI::Asset::Wobject::Search', %tag});
|
|
|
|
# Test for a sane object type
|
|
isa_ok($search, 'WebGUI::Asset::Wobject::Search');
|
|
|
|
# Test to see if we can set new values
|
|
my $newSearchSettings = {
|
|
templateId=>'testingtestingtesting1',
|
|
searchRoot=>'testingtestingtesting2',
|
|
classLimiter=>'WebGUI::Asset::Wobject::Article',
|
|
};
|
|
$search->update($newSearchSettings);
|
|
|
|
foreach my $newSetting (keys %{$newSearchSettings}) {
|
|
is ($search->get($newSetting), $newSearchSettings->{$newSetting}, "updated $newSetting is ".$newSearchSettings->{$newSetting});
|
|
}
|
|
|
|
#1234567890123456789012#
|
|
my $templateId = '_FAUX_SEARCH_TEMPLATE_';
|
|
|
|
my $templateMock = WebGUI::Test::MockAsset->new('WebGUI::Asset::Template');
|
|
$templateMock->mock_id($templateId);
|
|
$templateMock->set_true('prepare');
|
|
my $templateVars;
|
|
$templateMock->mock('process', sub { $templateVars = $_[1]; } );
|
|
|
|
$search->update({
|
|
searchRoot => WebGUI::Asset->getDefault($session)->getId,
|
|
classLimiter => '',
|
|
templateId => $templateId,
|
|
});
|
|
|
|
{
|
|
|
|
$session->request->setup_body({
|
|
doit => 1,
|
|
keywords => 'building + applications',
|
|
});
|
|
$search->prepareView;
|
|
eval { $search->view; };
|
|
ok(! $@, 'view did now error out on standalone regexp wildcard')
|
|
or diag $@;
|
|
$session->request->setup_body({
|
|
keywords => 'building +applications',
|
|
});
|
|
eval { $search->view; };
|
|
ok(! $@, 'view did now error out on prefix regexp wildcard')
|
|
or diag $@;
|
|
$session->request->setup_body({
|
|
keywords => 'building applications*',
|
|
});
|
|
eval { $search->view; };
|
|
ok(! $@, 'view did now error out on prefix regexp wildcard')
|
|
or diag $@;
|
|
$session->request->setup_body({});
|
|
|
|
}
|
|
|
|
{
|
|
my $versionTag2 = WebGUI::VersionTag->getWorking($session);
|
|
$tag{tagId} = $versionTag2->getId;
|
|
$versionTag2->set({name=>"Collab setup"});
|
|
my @addArgs = ( undef, undef, { skipNotification => 1 } );
|
|
my $collab = $node->addChild({
|
|
className => 'WebGUI::Asset::Wobject::Collaboration',
|
|
editTimeout => '1',
|
|
threadsPerPage => 3,
|
|
%tag,
|
|
},
|
|
@addArgs);
|
|
# finally, add the post to the collaboration system
|
|
my $props = {
|
|
className => 'WebGUI::Asset::Post::Thread',
|
|
content => 'verbosity shale anything',
|
|
ownerUserId => 1,
|
|
%tag,
|
|
};
|
|
|
|
my $thread = $collab->addChild($props, @addArgs);
|
|
$thread->setSkipNotification;
|
|
$versionTag2->commit();
|
|
WebGUI::Test->addToCleanup($versionTag2);
|
|
|
|
$session->request->setup_body({
|
|
doit => 1,
|
|
keywords => 'shale',
|
|
});
|
|
$search->prepareView;
|
|
$search->view;
|
|
$search->update({useContainers => 0});
|
|
unlike $templateVars->{result_set}->[0]->{url}, qr{\?pn=\d}, 'search returns regular URL for a Thread';
|
|
$search->update({useContainers => 1});
|
|
$search->view;
|
|
like $templateVars->{result_set}->[0]->{url}, qr{\?pn=\d}, 'search returns paginated URL for a Thread when useContainers=1';
|
|
|
|
$session->request->setup_body({});
|
|
$search->update({useContainers => 0});
|
|
}
|
|
|
|
{
|
|
# Test useContainers when the user cannot view the container
|
|
my $versionTag3 = WebGUI::VersionTag->getWorking($session);
|
|
$versionTag3->set({name=>"Folder setup"});
|
|
$tag{tagId} = $versionTag3->getId;
|
|
my @addArgs = ( undef, undef, { skipAutoCommitWorkflows => 1, skipNotification => 1 } );
|
|
my $folder = $node->addChild({
|
|
className => 'WebGUI::Asset::Wobject::Folder',
|
|
groupIdView => '3', # Admins
|
|
%tag,
|
|
},
|
|
@addArgs);
|
|
# add an article anyone can see
|
|
my $props = {
|
|
className => 'WebGUI::Asset::Wobject::Article',
|
|
synopsis => 'juxtaposition coolwhip cheezewhiz',
|
|
groupIdView => '7', # Everyone
|
|
tagId => $versionTag3->getId,
|
|
status => 'pending',
|
|
};
|
|
|
|
my $snippet = $folder->addChild($props, @addArgs);
|
|
$versionTag3->commit();
|
|
WebGUI::Test->addToCleanup($versionTag3);
|
|
|
|
$session->request->setup_body({
|
|
doit => 1,
|
|
keywords => 'juxtaposition',
|
|
});
|
|
WebGUI::Test::MockAsset->mock_id($templateId, $templateMock);
|
|
$search->prepareView;
|
|
$search->view;
|
|
$search->update({useContainers => 0});
|
|
note( explain $templateVars );
|
|
is $templateVars->{result_set}->[0]->{url}, $snippet->get('url'), 'search returns regular URL for article';
|
|
$search->update({useContainers => 1});
|
|
$search->view;
|
|
is $templateVars->{result_set}->[0]->{url}, $snippet->get('url'), 'search returns regular URL for article because user cannot see container';
|
|
|
|
WebGUI::Test::MockAsset->unmock_id($templateId);
|
|
$session->request->setup_body({});
|
|
$search->update({useContainers => 0});
|
|
}
|
|
|
|
TODO: {
|
|
local $TODO = "Tests to make later";
|
|
ok(0, 'Test prepareView method');
|
|
ok(0, 'Test view method');
|
|
}
|