Loading lib/Travelynx/Model/Users.pm +16 −6 Original line number Diff line number Diff line Loading @@ -803,23 +803,33 @@ sub reject_follow_request { ); } sub remove_follower { sub unfollow { my ( $self, %opt ) = @_; my $db = $opt{db} // $self->{pg}->db; my $uid = $opt{uid}; my $follower = $opt{follower}; my $target = $opt{target}; $db->delete( 'relations', { subject_id => $follower, subject_id => $uid, predicate => $predicate_atoi{follows}, object_id => $uid object_id => $target } ); } sub remove_follower { my ( $self, %opt ) = @_; $self->unfollow( db => $opt{db}, uid => $opt{follower}, target => $opt{uid}, ); } sub block { my ( $self, %opt ) = @_; Loading t/21-relations.t +76 −0 Original line number Diff line number Diff line Loading @@ -370,6 +370,82 @@ is( ), undef ); is( scalar $u->get_followers( uid => $uid1 ), 0 ); is( scalar $u->get_followers( uid => $uid2 ), 0 ); is( scalar $u->get_followees( uid => $uid1 ), 0 ); is( scalar $u->get_followees( uid => $uid2 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid1 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid2 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid1 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid2 ), 0 ); $u->request_follow( uid => $uid1, target => $uid2 ); $u->accept_follow_request( uid => $uid2, applicant => $uid1 ); is( $u->get_relation( uid => $uid1, target => $uid2 ), 'follows' ); is( $u->get_relation( uid => $uid2, target => $uid1 ), undef ); is( scalar $u->get_followers( uid => $uid1 ), 0 ); is( scalar $u->get_followers( uid => $uid2 ), 1 ); is( scalar $u->get_followees( uid => $uid1 ), 1 ); is( scalar $u->get_followees( uid => $uid2 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid1 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid2 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid1 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid2 ), 0 ); is_deeply( [ $u->get_followers( uid => $uid2 ) ], [ { id => $uid1, name => 'test1' } ] ); is_deeply( [ $u->get_followees( uid => $uid1 ) ], [ { id => $uid2, name => 'test2' } ] ); $u->unfollow( uid => $uid1, target => $uid2 ); is( $u->get_relation( uid => $uid1, target => $uid2 ), undef ); is( $u->get_relation( uid => $uid2, target => $uid1 ), undef ); is( scalar $u->get_followers( uid => $uid1 ), 0 ); is( scalar $u->get_followers( uid => $uid2 ), 0 ); is( scalar $u->get_followees( uid => $uid1 ), 0 ); is( scalar $u->get_followees( uid => $uid2 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid1 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid2 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid1 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid2 ), 0 ); $t->app->pg->db->query('drop schema travelynx_test_21 cascade'); done_testing(); Loading
lib/Travelynx/Model/Users.pm +16 −6 Original line number Diff line number Diff line Loading @@ -803,23 +803,33 @@ sub reject_follow_request { ); } sub remove_follower { sub unfollow { my ( $self, %opt ) = @_; my $db = $opt{db} // $self->{pg}->db; my $uid = $opt{uid}; my $follower = $opt{follower}; my $target = $opt{target}; $db->delete( 'relations', { subject_id => $follower, subject_id => $uid, predicate => $predicate_atoi{follows}, object_id => $uid object_id => $target } ); } sub remove_follower { my ( $self, %opt ) = @_; $self->unfollow( db => $opt{db}, uid => $opt{follower}, target => $opt{uid}, ); } sub block { my ( $self, %opt ) = @_; Loading
t/21-relations.t +76 −0 Original line number Diff line number Diff line Loading @@ -370,6 +370,82 @@ is( ), undef ); is( scalar $u->get_followers( uid => $uid1 ), 0 ); is( scalar $u->get_followers( uid => $uid2 ), 0 ); is( scalar $u->get_followees( uid => $uid1 ), 0 ); is( scalar $u->get_followees( uid => $uid2 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid1 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid2 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid1 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid2 ), 0 ); $u->request_follow( uid => $uid1, target => $uid2 ); $u->accept_follow_request( uid => $uid2, applicant => $uid1 ); is( $u->get_relation( uid => $uid1, target => $uid2 ), 'follows' ); is( $u->get_relation( uid => $uid2, target => $uid1 ), undef ); is( scalar $u->get_followers( uid => $uid1 ), 0 ); is( scalar $u->get_followers( uid => $uid2 ), 1 ); is( scalar $u->get_followees( uid => $uid1 ), 1 ); is( scalar $u->get_followees( uid => $uid2 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid1 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid2 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid1 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid2 ), 0 ); is_deeply( [ $u->get_followers( uid => $uid2 ) ], [ { id => $uid1, name => 'test1' } ] ); is_deeply( [ $u->get_followees( uid => $uid1 ) ], [ { id => $uid2, name => 'test2' } ] ); $u->unfollow( uid => $uid1, target => $uid2 ); is( $u->get_relation( uid => $uid1, target => $uid2 ), undef ); is( $u->get_relation( uid => $uid2, target => $uid1 ), undef ); is( scalar $u->get_followers( uid => $uid1 ), 0 ); is( scalar $u->get_followers( uid => $uid2 ), 0 ); is( scalar $u->get_followees( uid => $uid1 ), 0 ); is( scalar $u->get_followees( uid => $uid2 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid1 ), 0 ); is( scalar $u->get_follow_requests( uid => $uid2 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid1 ), 0 ); is( scalar $u->get_blocked_users( uid => $uid2 ), 0 ); $t->app->pg->db->query('drop schema travelynx_test_21 cascade'); done_testing();