114 lines
4.1 KiB
Perl
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');
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
|