webgui/t/Inbox/Groups.t
2010-06-14 13:27:32 -07:00

114 lines
4.1 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
#------------------------------------------------------------------
# This script tests the creation, sending, and queuing of mail messages
use strict;
use warnings;
use FindBin;
use lib "$FindBin::Bin/../lib";
use WebGUI::Test;
use WebGUI::Session;
use WebGUI::Inbox;
use WebGUI::User;
use Test::More;
plan tests => 14;
use Data::Dumper;
#----------------------------------------------------------------------------
# Create two users; add both to a group; send mail from one to the group;
# make sure the other gets it; remove the second user from the group;
# make sure the second user still has the mail message.
# Send a message from Bill to Fred.
# Concerns bug #11594
my $session = WebGUI::Test->session;
my $userFred = WebGUI::User->create($session);
WebGUI::Test->addToCleanup($userFred);
$userFred->username('fred');
$userFred->profileField('receiveInboxEmailNotifications', 0);
my $userBill = WebGUI::User->create($session);
WebGUI::Test->addToCleanup($userBill);
$userBill->username('bill');
$userBill->profileField('receiveInboxEmailNotifications', 0);
my $group = WebGUI::Group->new($session, 'new');
WebGUI::Test->addToCleanup($group);
$group->addUsers([$userFred->userId, $userBill->userId]);
my $inbox = WebGUI::Inbox->new($session);
isa_ok($inbox, 'WebGUI::Inbox');
is($inbox->getUnreadMessageCount($userFred->userId), 0, '0 messages according to getUnreadMessageCount');
my $message = $inbox->addMessage({
message => 'The quick brown dog jumped over the lazy fox',
groupId => $group->getId, # to group
sentBy => $userBill->userId,
}, {
no_email => 1,
});
ok(defined($message), 'Message sent to user in group');
WebGUI::Test->addToCleanup($message);
isa_ok($message, 'WebGUI::Inbox::Message');
my $messageId = $message->getId;
ok($messageId, 'messageId retrieved');
my $messageList;
my $message_cnt;
$messageList = $inbox->getMessagesForUser($userFred);
$message_cnt = scalar(@{$messageList});
is($message_cnt, 1, '... 1 messages according to getMessagesForUser');
is($inbox->getUnreadMessageCount($userFred->userId), 1, '... 1 messages according to getUnreadMessageCount');
ok(eval { $group->deleteUsers([ $userFred->userId ]); 1; }, "Delete user from group");
ok((! grep $_ eq $userFred->userId, @{ $group->getAllUsers() } ), '... removed from group according to getAllUsers');
ok((! grep $_ eq $group->getId, @{ $userFred->getGroupIdsRecursive } ), '... removed from group according to getGroupIdsRecursive');
# note "group->getAllUsers: " . Dumper $group->getAllUsers();
# note "getGroupIdsRecursive: " . Dumper $userFred->getGroupIdsRecursive;
# note "user->getGroups: " . Dumper $userFred->getGroups;
# eval { $userFred->session->stow->delete("gotGroupsForUser"); }; # blow the cache
# note "group->getAllUsers: " . Dumper $group->getAllUsers();
# note "getGroupIdsRecursive: " . Dumper $userFred->getGroupIdsRecursive;
# note "user->getGroups: " . Dumper $userFred->getGroups;
$messageList = $inbox->getMessagesForUser($userFred);
$message_cnt = scalar(@{$messageList});
is($message_cnt, 1, '... still 1 messages according to getMessagesForUser');
# warn $messageList->[0]->getStatus; # 'Pending'
is(eval { $messageList->[0]->getId } || '', $messageId, '... getMessagesForUser able to get message with messageId matching the message sent');
is($inbox->getUnreadMessageCount($userFred->userId), 1, '... still 1 messages according to getUnreadMessageCount');
$message->delete($userFred->userId);
is(scalar(@{ $inbox->getMessagesForUser($userFred) }), 0, 'Message deleted: User has no undeleted messages');
#----------------------------------------------------------------------------