From 2555a7d5b4096b44b89cb05400d2f90395bb0412 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 13 Jul 2006 04:58:03 +0000 Subject: [PATCH] add tests for bug validation --- t/Macro/GroupText.t | 92 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 82 insertions(+), 10 deletions(-) diff --git a/t/Macro/GroupText.t b/t/Macro/GroupText.t index 54c003dd1..160bff625 100644 --- a/t/Macro/GroupText.t +++ b/t/Macro/GroupText.t @@ -15,30 +15,102 @@ use lib "$FindBin::Bin/../lib"; use WebGUI::Test; use WebGUI::Macro; use WebGUI::Session; -use Data::Dumper; +use WebGUI::Group; +use WebGUI::User; use WebGUI::Macro_Config; my $session = WebGUI::Test->session; -use Test::More; - -my $numTests = 2; # increment this value for each test you create - -plan tests => $numTests; +use Test::More; # increment this value for each test you create +plan tests => 2 + 4; unless ($session->config->get('macros')->{'GroupText'}) { Macro_Config::insert_macro($session, 'GroupText', 'GroupText'); } -my $macroText = "^GroupText(3,local,foreigner);"; +my $macroText = q!^GroupText("Admin","admin","visitor");!; my $output; +$session->user({userId => 1}); $output = $macroText; WebGUI::Macro::process($session, \$output); -is($output, 'foreigner', 'GroupText, user not in group'); +is($output, 'visitor', 'user is not admin'); -$output = $macroText; $session->user({userId => 3}); +$output = $macroText; WebGUI::Macro::process($session, \$output); -is($output, 'local', 'GroupText, user in group'); +is($output, 'admin', 'user is admin'); + +##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. + +my @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 + +my $ms_users = WebGUI::Group->new($session, "new"); +my $ms_distributors = WebGUI::Group->new($session, "new"); +my $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 + +my $disti = WebGUI::User->new($session, 'new'); +my $int_disti = WebGUI::User->new($session, 'new'); + +$ms_distributors->addUsers([$disti->userId]); +$ms_int_distributors->addUsers([$int_disti->userId]); + +$macroText = q!^GroupText("MS Users","user","not");,^GroupText("MS Distributors","disti","not");,^GroupText("MS International Distributors","int_disti","not");!; + +$session->user({userId => $mob[0]->userId}); +$output = $macroText; +WebGUI::Macro::process($session, \$output); +is($output, 'user,not,not', 'user is ms user'); + +$session->user({userId => $disti->userId}); +$output = $macroText; +WebGUI::Macro::process($session, \$output); +is($output, 'user,disti,not', 'user is ms user and distributor'); + +$session->user({userId => $int_disti->userId}); +$output = $macroText; +WebGUI::Macro::process($session, \$output); +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'); +} +