If the post is owned by Visitor, do not show the link because no one is allowed to see Visitor's profile. If the current user is Visitor, do not show the link because Visitor is not allowed to view anyone's profile.
92 lines
4 KiB
Perl
92 lines
4 KiB
Perl
# vim:syntax=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
|
|
#------------------------------------------------------------------
|
|
|
|
# Test the Collaboration system template variables
|
|
#
|
|
#
|
|
|
|
use FindBin;
|
|
use strict;
|
|
use lib "$FindBin::Bin/../../../lib";
|
|
use WebGUI::Test; # Must use this before any other WebGUI modules
|
|
use Test::More;
|
|
use Test::Deep;
|
|
use Data::Dumper;
|
|
use WebGUI::Session;
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Tests
|
|
plan tests => 20; # Increment this number for each test you create
|
|
|
|
#----------------------------------------------------------------------------
|
|
# Init
|
|
my $session = WebGUI::Test->session;
|
|
my @addChildArgs = ( {skipAutoCommitWorkflows=>1} );
|
|
my $collab = WebGUI::Asset->getImportNode( $session )->addChild({
|
|
className => 'WebGUI::Asset::Wobject::Collaboration',
|
|
threadsPerPage => 20,
|
|
displayLastReply => 1,
|
|
});
|
|
|
|
my @threads = (
|
|
$collab->addChild( {
|
|
className => 'WebGUI::Asset::Post::Thread',
|
|
title => "X - Foo",
|
|
isSticky => 0,
|
|
ownerUserId => 1,
|
|
}, undef, 1, @addChildArgs),
|
|
$collab->addChild( {
|
|
className => 'WebGUI::Asset::Post::Thread',
|
|
title => "X - Bar",
|
|
isSticky => 0,
|
|
ownerUserId => 3,
|
|
}, undef, 2, @addChildArgs),
|
|
);
|
|
|
|
$_->setSkipNotification for @threads; # 100+ messages later...
|
|
my $versionTag = WebGUI::VersionTag->getWorking( $session );
|
|
$versionTag->commit;
|
|
WebGUI::Test->tagsToRollback($versionTag);
|
|
|
|
my $templateVars;
|
|
my $posts;
|
|
$session->user({userId => 3});
|
|
$templateVars = $collab->getViewTemplateVars();
|
|
|
|
##Threads come in reverse order, most recent first
|
|
$posts = $templateVars->{post_loop};
|
|
is( $posts->[1]->{'ownerUserId'}, 1, 'first post owned by visitor');
|
|
ok( $posts->[1]->{'user.isVisitor'}, 'first post made by visitor');
|
|
ok( $posts->[1]->{'hideProfileUrl'}, 'hide profile url, since post made by visitor');
|
|
ok( $posts->[1]->{'lastReply.user.isVisitor'}, 'lastReply not made by visitor');
|
|
ok( $posts->[1]->{'lastReply.hideProfileUrl'}, 'lastReply show profile url, since post not made by visitor, and user is not visitor');
|
|
is( $posts->[0]->{'ownerUserId'}, 3, 'second post owned by admin');
|
|
ok( !$posts->[0]->{'user.isVisitor'}, 'first post made by visitor');
|
|
ok( !$posts->[0]->{'hideProfileUrl'}, 'show profile url, since post made by admin, and user is not visitor');
|
|
ok( !$posts->[0]->{'lastReply.user.isVisitor'}, 'lastReply not made by visitor');
|
|
ok( !$posts->[0]->{'lastReply.hideProfileUrl'}, 'lastReply show profile url, since post not made by visitor, and user is not visitor');
|
|
|
|
$session->user({userId => 1});
|
|
$templateVars = $collab->getViewTemplateVars();
|
|
|
|
##Threads come in reverse order, most recent first
|
|
$posts = $templateVars->{post_loop};
|
|
is( $posts->[1]->{'ownerUserId'}, 1, 'first post owned by visitor');
|
|
ok( $posts->[1]->{'user.isVisitor'}, 'first post made by visitor');
|
|
ok( $posts->[1]->{'hideProfileUrl'}, 'hide profile url, since current user is visitor');
|
|
ok( $posts->[1]->{'lastReply.user.isVisitor'}, 'lastReply not made by visitor');
|
|
ok( $posts->[1]->{'lastReply.hideProfileUrl'}, 'lastReply hide profile url, since user is visitor');
|
|
is( $posts->[0]->{'ownerUserId'}, 3, 'second post owned by admin');
|
|
ok( !$posts->[0]->{'user.isVisitor'}, 'first post made by visitor');
|
|
ok( $posts->[0]->{'hideProfileUrl'}, 'hide profile url, and user is visitor');
|
|
ok( !$posts->[0]->{'lastReply.user.isVisitor'}, 'lastReply not made by visitor');
|
|
ok( $posts->[0]->{'lastReply.hideProfileUrl'}, 'lastReply hide profile url, since user is visitor');
|
|
#vim:ft=perl
|