200 lines
6.5 KiB
Perl
200 lines
6.5 KiB
Perl
|
|
# t/esn-findsubscription.t
|
||
|
|
#
|
||
|
|
# Test finding ESN subscriptions.
|
||
|
|
#
|
||
|
|
# This code was forked from the LiveJournal project owned and operated
|
||
|
|
# by Live Journal, Inc. The code has been modified and expanded by
|
||
|
|
# Dreamwidth Studios, LLC. These files were originally licensed under
|
||
|
|
# the terms of the license supplied by Live Journal, Inc, which can
|
||
|
|
# currently be found at:
|
||
|
|
#
|
||
|
|
# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
|
||
|
|
#
|
||
|
|
# In accordance with the original license, this code and all its
|
||
|
|
# modifications are provided under the GNU General Public License.
|
||
|
|
# A copy of that license can be found in the LICENSE file included as
|
||
|
|
# part of this distribution.
|
||
|
|
|
||
|
|
use strict;
|
||
|
|
use warnings;
|
||
|
|
|
||
|
|
use Test::More tests => 75;
|
||
|
|
|
||
|
|
BEGIN { $LJ::_T_CONFIG = 1; require "$ENV{LJHOME}/cgi-bin/ljlib.pl"; }
|
||
|
|
use LJ::Event;
|
||
|
|
use LJ::Test qw(memcache_stress temp_user);
|
||
|
|
use FindBin qw($Bin);
|
||
|
|
|
||
|
|
# some simple testing here. basically just make sure the has_subscription works right.
|
||
|
|
|
||
|
|
sub test_subscription {
|
||
|
|
my $cv = shift;
|
||
|
|
my $u1 = temp_user();
|
||
|
|
my $u2 = temp_user();
|
||
|
|
$u1->add_edge( $u2, watch => { nonotify => 1 } ); # make u1 watch u2
|
||
|
|
memcache_stress(
|
||
|
|
sub {
|
||
|
|
$cv->( $u1, $u2 );
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
test_subscription(
|
||
|
|
sub {
|
||
|
|
my ( $u1, $u2 ) = @_;
|
||
|
|
my ( $foundsubs, $subsc1, $subsc2, $res );
|
||
|
|
|
||
|
|
# no params
|
||
|
|
{
|
||
|
|
eval { $u1->has_subscription() };
|
||
|
|
like( $@, qr/no parameters/i, "Bogus has_subscription call" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# invalid params
|
||
|
|
{
|
||
|
|
eval { $u1->has_subscription( ooga_booga => 123 ) };
|
||
|
|
like( $@, qr/invalid parameters/i, "Bogus has_subscription call" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# clear all subs
|
||
|
|
$_->delete foreach $u1->subscriptions;
|
||
|
|
$_->delete foreach $u2->subscriptions;
|
||
|
|
|
||
|
|
# make sure no subscriptions
|
||
|
|
ok( !$u1->subscriptions, "User 1 has no subscriptions" );
|
||
|
|
ok( !$u2->subscriptions, "User 2 has no subscriptions" );
|
||
|
|
|
||
|
|
# subscribe $u1 to all posts on $u2
|
||
|
|
{
|
||
|
|
$subsc1 = $u1->subscribe(
|
||
|
|
event => "JournalNewComment",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
);
|
||
|
|
ok( $subsc1, "Made subscription" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# see if we can find this subscription
|
||
|
|
{
|
||
|
|
$foundsubs = $u1->has_subscription(
|
||
|
|
event => "JournalNewComment",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
);
|
||
|
|
is( $foundsubs, 1, "Found one subscription" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# look for bogus subscriptions
|
||
|
|
{
|
||
|
|
$foundsubs = $u1->has_subscription(
|
||
|
|
event => "JournalNewComment",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u1,
|
||
|
|
);
|
||
|
|
ok( !$foundsubs, "Couldn't find bogus subscription" );
|
||
|
|
$foundsubs = $u1->has_subscription(
|
||
|
|
event => "JournalNewEntry",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
);
|
||
|
|
ok( !$foundsubs, "Couldn't find bogus subscription" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# look for more general matches
|
||
|
|
{
|
||
|
|
$foundsubs = $u1->has_subscription( method => "Email", );
|
||
|
|
is( $foundsubs, 1, "Found subscription" );
|
||
|
|
$foundsubs = $u1->has_subscription( event => "JournalNewComment", );
|
||
|
|
is( $foundsubs, 1, "Found subscription" );
|
||
|
|
$foundsubs = $u1->has_subscription( journal => $u2, );
|
||
|
|
is( $foundsubs, 1, "Found subscription" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# add another subscription and do more searching
|
||
|
|
{
|
||
|
|
$subsc2 = $u1->subscribe(
|
||
|
|
event => "AddedToCircle",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
arg1 => 10,
|
||
|
|
);
|
||
|
|
ok( $subsc2, "Subscribed" );
|
||
|
|
|
||
|
|
# search for second subscription
|
||
|
|
$foundsubs = $u1->has_subscription(
|
||
|
|
event => "AddedToCircle",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
arg1 => 10,
|
||
|
|
);
|
||
|
|
is( $foundsubs, 1, "Found one new subscription" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# test filtering
|
||
|
|
{
|
||
|
|
$foundsubs = $u1->has_subscription( method => "Email", );
|
||
|
|
is( $foundsubs, 2, "Found two subscriptions" );
|
||
|
|
|
||
|
|
$foundsubs = $u1->has_subscription( event => "JournalNewComment", );
|
||
|
|
is( $foundsubs, 1, "Found one subscription" );
|
||
|
|
|
||
|
|
$foundsubs = $u1->has_subscription( event => "AddedToCircle", );
|
||
|
|
is( $foundsubs, 1, "Found one subscription" );
|
||
|
|
|
||
|
|
$foundsubs = $u1->has_subscription( arg1 => 10, );
|
||
|
|
is( $foundsubs, 1, "Found one subscription" );
|
||
|
|
|
||
|
|
$foundsubs = $u1->has_subscription( journal => $u2, );
|
||
|
|
is( $foundsubs, 2, "Found two subscriptions" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# delete subscription and make sure we can't still find it
|
||
|
|
{
|
||
|
|
$subsc1->delete;
|
||
|
|
$foundsubs = $u1->has_subscription(
|
||
|
|
event => "JournalNewComment",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
);
|
||
|
|
is( $foundsubs, 0, "Didn't find subscription after deleting" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# delete subscription and make sure we can't still find it
|
||
|
|
{
|
||
|
|
$subsc2->delete;
|
||
|
|
$foundsubs = $u1->has_subscription(
|
||
|
|
event => "AddedToCircle",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
);
|
||
|
|
ok( !$foundsubs, "Didn't find subscription after deleting" );
|
||
|
|
}
|
||
|
|
|
||
|
|
# test search params
|
||
|
|
{
|
||
|
|
my $subsc3 = $u1->subscribe(
|
||
|
|
event => "AddedToCircle",
|
||
|
|
method => "Email",
|
||
|
|
journalid => $u2->{userid},
|
||
|
|
);
|
||
|
|
ok( $subsc3, "Made subscription" );
|
||
|
|
ok( $u2->equals( $subsc3->journal ), "Subscribed to correct journal" );
|
||
|
|
my ($subsc3_f) = $u1->has_subscription( event => "AddedToCircle", );
|
||
|
|
is( $subsc3_f->etypeid, "LJ::Event::AddedToCircle"->etypeid, "Found subscription" );
|
||
|
|
$subsc3->delete;
|
||
|
|
|
||
|
|
my $arg1 = 42;
|
||
|
|
my $subsc4 = $u1->subscribe(
|
||
|
|
event => "JournalNewEntry",
|
||
|
|
method => "Email",
|
||
|
|
journal => $u2,
|
||
|
|
arg1 => $arg1,
|
||
|
|
);
|
||
|
|
ok( $subsc4, "Made subscription" );
|
||
|
|
my ($subsc4_f) = $u1->has_subscription( arg1 => $arg1 );
|
||
|
|
is( $subsc4_f->arg1, $arg1, "Found subscription" );
|
||
|
|
$subsc4->delete;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
);
|