webgui/t/Macro/CanEditText.t
Colin Kuskie ac953d2043 Adding Page macro test. If there complaints about not being able to
access variables from an Asset, the test is very easy to extend to add
new fields or asset types.
The remaining t's have had their URLs lower-cased to be URL compliant.
2006-07-19 22:20:49 +00:00

129 lines
3.8 KiB
Perl

#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2006 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 FindBin;
use strict;
use lib "$FindBin::Bin/../lib";
use WebGUI::Test;
use WebGUI::Macro;
use WebGUI::Session;
use Data::Dumper;
use WebGUI::Macro_Config;
my $session = WebGUI::Test->session;
use Test::More; # increment this value for each test you create
unless ($session->config->get('macros')->{'CanEditText'}) {
Macro_Config::insert_macro($session, 'CanEditText', 'CanEditText');
}
my $adminText = "^CanEditText(editor);";
my $output;
my $homeAsset = WebGUI::Asset->getDefault($session);
$session->asset($homeAsset);
my ($versionTag, $asset, $group, @users) = setupTest($session, $homeAsset);
my @testSets = (
{
comment => 'Visitor sees nothing',
userId => 1,
macroText => q!^CanEditText("%s");!,
text => q!I am an editor!,
asset => $asset,
output => '',
},
{
comment => 'Admin sees text',
userId => 3,
macroText => q!^CanEditText("%s");!,
text => q!I am an editor!,
asset => $asset,
output => 'I am an editor',
},
{
comment => 'Random user sees nothing',
userId => $users[0]->userId,
macroText => q!^CanEditText("%s");!,
text => q!I am an editor!,
asset => $asset,
output => '',
},
{
comment => 'General Content Manager sees nothing',
userId => $users[1]->userId,
macroText => q!^CanEditText("%s");!,
text => q!I am an editor!,
asset => $asset,
output => '',
},
{
comment => 'Member of group to edit this asset sees text',
userId => $users[2]->userId,
macroText => q!^CanEditText("%s");!,
text => q!I am an editor!,
asset => $asset,
output => 'I am an editor',
},
);
my $numTests = scalar @testSets;
plan tests => $numTests;
foreach my $testSet (@testSets) {
$session->user({userId=>$testSet->{userId}});
$session->asset($testSet->{asset});
my $output = sprintf $testSet->{macroText}, $testSet->{text};
WebGUI::Macro::process($session, \$output);
is($output, $testSet->{output}, $testSet->{comment});
}
sub setupTest {
my ($session, $defaultNode) = @_;
$session->user({userId=>3});
my $editGroup = WebGUI::Group->new($session, "new");
my $cm = WebGUI::Group->find($session, "Content Managers");
$cm->addGroups([$editGroup->getId]);
##Create an asset with specific editing privileges
my $versionTag = WebGUI::VersionTag->getWorking($session);
$versionTag->set({name=>"CanEditText test"});
my $properties = {
title => 'CanEditText test template',
className => 'WebGUI::Asset::Wobject::Article',
url => '/home/canedittext-test',
description => 'This is a test article for viewing privileges',
id => 'CanEditTextTestAsset01',
groupIdEdit => $editGroup->getId(),
};
my $asset = $defaultNode->addChild($properties, $properties->{id});
$versionTag->commit;
my @users = map { WebGUI::User->new($session, "new") } 0..2;
##User 1 is a content manager
$users[1]->addToGroups([$cm->getId]);
##User 2 is a member of a content manager sub-group
$users[2]->addToGroups([$editGroup->getId]);
return ($versionTag, $asset, $editGroup, @users);
}
END { ##Clean-up after yourself, always
if (defined $versionTag and ref $versionTag eq 'WebGUI::VersionTag') {
$versionTag->rollback;
}
foreach my $testGroup ($group) {
$testGroup->delete if (defined $testGroup and ref $testGroup eq 'WebGUI::Group');
}
foreach my $dude (@users) {
$dude->delete if (defined $dude and ref $dude eq 'WebGUI::User');
}
}