webgui/t/Macro/GroupText.t
Colin Kuskie dd9c807166 Conditional load conversion.
In Page.t, place the newly created Snippet under a versionTag
so that it can be cleaned up at the end of the test.
2006-07-30 18:34:47 +00:00

134 lines
4.5 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::Session;
use WebGUI::Group;
use WebGUI::User;
my $session = WebGUI::Test->session;
use Test::More; # increment this value for each test you create
my $numTests;
$numTests = 3; #Direct Macro tests
$numTests += 4; #Bug tests
$numTests += 1; #For the use_ok
plan tests => $numTests;
my $macro = 'WebGUI::Macro::GroupText';
my $loaded = use_ok($macro);
my @mob;
my ($ms_users, $ms_distributors, $ms_int_distributors);
my ($disti, $int_disti);
SKIP: {
skip "Unable to load $macro", $numTests-1 unless $loaded;
my $output;
$session->user({userId => 1});
$output = WebGUI::Macro::GroupText::process($session, "Admins", "admin", "visitor");
is($output, 'visitor', 'user is not admin');
$session->user({userId => 3});
$output = WebGUI::Macro::GroupText::process($session, "Admins", "admin", "visitor");
is($output, 'admin', 'user is admin');
$output = WebGUI::Macro::GroupText::process($session, "Not a Group","in group","outside group");
is($output, 'Group Not a Group was not found', 'Non-existant group returns an error message');
##Bug test setup
##Create a small database
$session->db->dbh->do('DROP TABLE IF EXISTS myUserTable');
$session->db->dbh->do(q!CREATE TABLE myUserTable (userId varchar(22) binary NOT NULL default '', PRIMARY KEY(userId)) TYPE=InnoDB!);
##Create a bunch of users and put them in the table.
@mob = map { WebGUI::User->new($session, "new") } 0..3;
my $sth = $session->db->prepare('INSERT INTO myUserTable VALUES(?)');
foreach my $mob (@mob) {
$sth->execute([ $mob->userId ]);
}
##Create the 3 groups
$ms_users = WebGUI::Group->new($session, "new");
$ms_distributors = WebGUI::Group->new($session, "new");
$ms_int_distributors = WebGUI::Group->new($session, "new");
$ms_users->name('MS Users');
$ms_distributors->name('MS Distributors');
$ms_int_distributors->name('MS International Distributors');
##MS Users has an SQL query
$ms_users->dbQuery(q!select userId from myUserTable!);
ok($mob[0]->isInGroup($ms_users->getId), 'mob[0] is in $ms_users');
##Establish group hierarchy
##MS International Distributors is a member of MS Distributors
##MS Distributors is a member of MS Users
$ms_users->addGroups([$ms_distributors->getId]);
$ms_distributors->addGroups([$ms_int_distributors->getId]);
##Add two users for testing the two groups
$disti = WebGUI::User->new($session, 'new');
$int_disti = WebGUI::User->new($session, 'new');
$ms_distributors->addUsers([$disti->userId]);
$ms_int_distributors->addUsers([$int_disti->userId]);
$session->user({userId => $mob[0]->userId});
$output = join ',',
WebGUI::Macro::GroupText::process($session, "MS Users","user","not"),
WebGUI::Macro::GroupText::process($session, "MS Distributors","disti","not"),
WebGUI::Macro::GroupText::process($session, "MS International Distributors","int_disti","not"),
;
is($output, 'user,not,not', 'user is ms user');
$session->user({userId => $disti->userId});
$output = join ',',
WebGUI::Macro::GroupText::process($session, "MS Users","user","not"),
WebGUI::Macro::GroupText::process($session, "MS Distributors","disti","not"),
WebGUI::Macro::GroupText::process($session, "MS International Distributors","int_disti","not"),
;
is($output, 'user,disti,not', 'user is ms user and distributor');
$session->user({userId => $int_disti->userId});
$output = join ',',
WebGUI::Macro::GroupText::process($session, "MS Users","user","not"),
WebGUI::Macro::GroupText::process($session, "MS Distributors","disti","not"),
WebGUI::Macro::GroupText::process($session, "MS International Distributors","int_disti","not"),
;
is($output, 'user,disti,int_disti', 'user is in all three groups');
}
##clean up everything
END {
foreach my $testGroup ($ms_users, $ms_distributors, $ms_int_distributors, ) {
$testGroup->delete if (defined $testGroup and ref $testGroup eq 'WebGUI::Group');
}
foreach my $dude (@mob, $disti, $int_disti, ) {
$dude->delete if (defined $dude and ref $dude eq 'WebGUI::User');
}
$session->db->dbh->do('DROP TABLE IF EXISTS myUserTable');
}