Skip to:
Content

BuddyPress.org

Ticket #6209: 6209-more-invite-tests.07.patch

File 6209-more-invite-tests.07.patch, 12.9 KB (added by dcavins, 5 years ago)

Test coverage for groups_get_invites_for_user(), groups_get_invite_count_for_user(), groups_invite_user(), groups_accept_invite(), groups_send_invites(), groups_delete_all_group_invites(), groups_send_membership_request(), groups_accept_membership_request(), groups_accept_all_pending_membership_requests()

  • tests/phpunit/testcases/groups/class-bp-groups-member.php

    diff --git tests/phpunit/testcases/groups/class-bp-groups-member.php tests/phpunit/testcases/groups/class-bp-groups-member.php
    index 7608130..462a996 100644
    class BP_Tests_BP_Groups_Member_TestCases extends BP_UnitTestCase { 
    223223
    224224                $this->set_current_user( $old_current_user );
    225225        }
    226 }
    227226
     227        /**
     228         * @group groups_get_invites_for_user
     229         * @group group_invitations
     230         * @group group_membership
     231         */
     232        public function test_groups_get_invites_for_user() {
     233                $u1 = $this->factory->user->create();
     234                $u2 = $this->factory->user->create();
     235                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     236                $g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     237                $g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     238
     239                self::invite_user_to_group( $u2, $g1, $u1 );
     240                self::invite_user_to_group( $u2, $g2, $u1 );
     241                self::invite_user_to_group( $u2, $g3, $u1 );
     242
     243                $groups = groups_get_invites_for_user( $u2 );
     244
     245                $this->assertEqualSets( array( $g1, $g2, $g3 ), wp_list_pluck( $groups['groups'], 'id' ) );
     246        }
     247
     248        /**
     249         * @group groups_get_invites_for_user
     250         * @group group_invitations
     251         * @group group_membership
     252         */
     253        public function test_groups_get_invites_for_user_infer_user() {
     254                $old_current_user = get_current_user_id();
     255
     256                $u1 = $this->factory->user->create();
     257                $u2 = $this->factory->user->create();
     258                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     259                $g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     260                $g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     261
     262                self::invite_user_to_group( $u2, $g1, $u1 );
     263                self::invite_user_to_group( $u2, $g2, $u1 );
     264                self::invite_user_to_group( $u2, $g3, $u1 );
     265
     266                $this->set_current_user( $u2 );
     267                $groups = groups_get_invites_for_user();
     268                $this->assertEqualSets( array( $g1, $g2, $g3 ), wp_list_pluck( $groups['groups'], 'id' ) );
     269
     270                $this->set_current_user( $old_current_user );
     271        }
     272
     273        /**
     274         * @group groups_get_invites_for_user
     275         * @group group_invitations
     276         * @group group_membership
     277         */
     278        public function test_groups_get_invites_for_user_with_exclude() {
     279                $u1 = $this->factory->user->create();
     280                $u2 = $this->factory->user->create();
     281                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     282                $g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     283                $g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     284
     285                self::invite_user_to_group( $u2, $g1, $u1 );
     286                self::invite_user_to_group( $u2, $g2, $u1 );
     287                self::invite_user_to_group( $u2, $g3, $u1 );
     288
     289                $groups = groups_get_invites_for_user( $u2, $limit = false, $page = false, $exclude = array( $g2 ) );
     290                $this->assertEqualSets( array( $g1, $g3 ), wp_list_pluck( $groups['groups'], 'id' ) );
     291        }
     292
     293        /**
     294         * @group groups_get_invite_count_for_user
     295         * @group group_invitations
     296         * @group group_membership
     297         */
     298        public function test_groups_get_invite_count_for_user() {
     299                $u1 = $this->factory->user->create();
     300                $u2 = $this->factory->user->create();
     301                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     302                $g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     303                $g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     304
     305                self::invite_user_to_group( $u2, $g1, $u1 );
     306                self::invite_user_to_group( $u2, $g2, $u1 );
     307                self::invite_user_to_group( $u2, $g3, $u1 );
     308
     309                $this->assertEquals( 3, groups_get_invite_count_for_user( $u2 ) );
     310        }
     311
     312        /**
     313         * @group groups_get_invite_count_for_user
     314         * @group group_invitations
     315         * @group group_membership
     316         */
     317        public function test_groups_get_invite_count_for_user_ignore_drafts() {
     318                $u1 = $this->factory->user->create();
     319                $u2 = $this->factory->user->create();
     320                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     321
     322                $args = array(
     323                        'user_id'       => $u2,
     324                        'group_id'      => $g1,
     325                        'inviter_id'    => $u1,
     326                        'date_modified' => bp_core_current_time(),
     327                        'is_confirmed'  => 0
     328                );
     329                // Create draft invitation.
     330                groups_invite_user( $args );
     331
     332                // groups_get_invite_count_for_user should ignore draft invitations.
     333                $this->assertEquals( 0, groups_get_invite_count_for_user( $u2 ) );
     334        }
     335
     336        /**
     337         * @group groups_invite_user
     338         * @group group_invitations
     339         * @group group_membership
     340         */
     341        public function test_groups_invite_user() {
     342                $u1 = $this->factory->user->create();
     343                $u2 = $this->factory->user->create();
     344                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     345
     346                // Create draft invitation
     347                $args = array(
     348                        'user_id'       => $u2,
     349                        'group_id'      => $g1,
     350                        'inviter_id'    => $u1,
     351                        'date_modified' => bp_core_current_time(),
     352                        'is_confirmed'  => 0
     353                );
     354                groups_invite_user( $args );
     355
     356                // Check that the draft invitation has been created.
     357                $draft = groups_check_user_has_invite( $u2, $g1, $type = 'all' );
     358                $this->assertTrue( is_numeric( $draft ) && $draft > 0 );
     359        }
     360
     361        /**
     362         * @group groups_send_invites
     363         * @group group_invitations
     364         * @group group_membership
     365         */
     366        public function test_groups_send_invites() {
     367                $u1 = $this->factory->user->create();
     368                $u2 = $this->factory->user->create();
     369                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     370
     371                // Create draft invitation
     372                $args = array(
     373                        'user_id'       => $u2,
     374                        'group_id'      => $g1,
     375                        'inviter_id'    => $u1,
     376                        'date_modified' => bp_core_current_time(),
     377                        'is_confirmed'  => 0
     378                );
     379                groups_invite_user( $args );
     380
     381                // Send the invitation
     382                groups_send_invites( $u1, $g1 );
     383                // Check that the invitation has been sent.
     384                $sent = groups_check_user_has_invite( $u2, $g1, $type = 'sent' );
     385                $this->assertTrue( is_numeric( $sent ) && $sent > 0 );
     386        }
     387
     388        /**
     389         * @group groups_accept_invite
     390         * @group group_invitations
     391         * @group group_membership
     392         */
     393        public function test_groups_accept_invite() {
     394                $u1 = $this->factory->user->create();
     395                $u2 = $this->factory->user->create();
     396                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     397
     398                // Create draft invitation
     399                $args = array(
     400                        'user_id'       => $u2,
     401                        'group_id'      => $g1,
     402                        'inviter_id'    => $u1,
     403                        'date_modified' => bp_core_current_time(),
     404                        'is_confirmed'  => 0
     405                );
     406                groups_invite_user( $args );
     407
     408                // Send the invitation
     409                groups_send_invites( $u1, $g1 );
     410
     411                // Accept the invitation
     412                groups_accept_invite( $u2, $g1 );
     413
     414                // Check that the user is a member of the group.
     415                $member = groups_is_user_member( $u2, $g1 );
     416                $this->assertTrue( is_numeric( $member ) && $member > 0 );
     417                // Check that the invite has been removed.
     418                $invite = groups_check_user_has_invite( $u2, $g1, $type = 'all' );
     419                $this->assertTrue( is_null( $invite ) );
     420        }
     421
     422        /**
     423         * @group groups_accept_invite
     424         * @group group_invitations
     425         * @group group_membership
     426         */
     427        public function test_groups_accept_invite_removes_membership_requests() {
     428                $u1 = $this->factory->user->create();
     429                $u2 = $this->factory->user->create();
     430                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     431
     432                // Create draft invitation
     433                $args = array(
     434                        'user_id'       => $u2,
     435                        'group_id'      => $g1,
     436                        'inviter_id'    => $u1,
     437                        'date_modified' => bp_core_current_time(),
     438                        'is_confirmed'  => 0
     439                );
     440                groups_invite_user( $args );
     441
     442                // Create membership request
     443                groups_send_membership_request( $u2, $g1 );
     444                $request = groups_check_for_membership_request( $u2, $g1 );
     445                $this->assertTrue( is_numeric( $request ) && $request > 0 );
     446
     447                // Send the invitation
     448                groups_send_invites( $u1, $g1 );
     449
     450                // Accept the invitation
     451                groups_accept_invite( $u2, $g1 );
     452
     453                // Check that the membership request has been removed.
     454                $this->assertTrue( 0 == groups_check_for_membership_request( $u2, $g1 ) );
     455        }
     456
     457        /**
     458         * @group groups_send_invites
     459         * @group group_invitations
     460         * @group group_membership_requests
     461         * @group group_membership
     462         */
     463        public function test_groups_sent_invite_plus_request_equals_member() {
     464                $u1 = $this->factory->user->create();
     465                $u2 = $this->factory->user->create();
     466                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     467
     468                // Create draft invitation
     469                $args = array(
     470                        'user_id'       => $u2,
     471                        'group_id'      => $g1,
     472                        'inviter_id'    => $u1,
     473                        'date_modified' => bp_core_current_time(),
     474                        'is_confirmed'  => 0
     475                );
     476                groups_invite_user( $args );
     477
     478                // Send the invitation
     479                groups_send_invites( $u1, $g1 );
     480
     481                // Create membership request
     482                groups_send_membership_request( $u2, $g1 );
     483
     484                // User should now be a group member
     485                $member = groups_is_user_member( $u2, $g1 );
     486                $this->assertTrue( is_numeric( $member ) && $member > 0 );
     487        }
     488
     489        /**
     490         * @group groups_delete_all_group_invites
     491         * @group group_invitations
     492         * @group group_membership
     493         */
     494        public function test_groups_delete_all_group_invites() {
     495                $u1 = $this->factory->user->create();
     496                $u2 = $this->factory->user->create();
     497                $u3 = $this->factory->user->create();
     498                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     499
     500                self::invite_user_to_group( $u2, $g1, $u1 );
     501                self::invite_user_to_group( $u3, $g1, $u1 );
     502
     503                groups_delete_all_group_invites( $g1 );
     504
     505                // Get group invitations of any type, from any user in the group.
     506                $args = array(
     507                        'group_id'     => $g1,
     508                        'is_confirmed' => 0,
     509                        'invite_sent'  => null,
     510                        'inviter_id'   => 'any',
     511                );
     512                $invitees = new BP_Group_Member_Query( $args );
     513
     514                $this->assertTrue( empty( $invitees->results ) );
     515        }
     516
     517        /**
     518         * @group groups_send_membership_request
     519         * @group group_membership_requests
     520         * @group group_membership
     521         */
     522        public function test_groups_send_membership_request() {
     523                $u1 = $this->factory->user->create();
     524                $g1 = $this->factory->group->create();
     525
     526                // Create membership request
     527                groups_send_membership_request( $u1, $g1 );
     528
     529                $request = groups_check_for_membership_request( $u1, $g1 );
     530                $this->assertTrue( is_numeric( $request ) && $request > 0 );
     531        }
     532
     533        /**
     534         * @group groups_accept_membership_request
     535         * @group group_membership_requests
     536         * @group group_membership
     537         */
     538        public function test_groups_accept_membership_request_by_membership_id() {
     539                $u1 = $this->factory->user->create();
     540                $g1 = $this->factory->group->create();
     541
     542                // Create membership request
     543                groups_send_membership_request( $u1, $g1 );
     544
     545                // Get group invitations of any type, from any user in the group.
     546                $member = new BP_Groups_Member( $u1, $g1 );
     547
     548                groups_accept_membership_request( $member->id );
     549
     550                // User should now be a group member.
     551                $member = groups_is_user_member( $u1, $g1 );
     552
     553                $this->assertTrue( is_numeric( $member ) && $member > 0 );
     554        }
     555
     556        /**
     557         * @group groups_accept_membership_request
     558         * @group group_membership_requests
     559         * @group group_membership
     560         */
     561        public function test_groups_accept_membership_request_by_user_id_group_id() {
     562                $u1 = $this->factory->user->create();
     563                $g1 = $this->factory->group->create();
     564
     565                // Create membership request
     566                groups_send_membership_request( $u1, $g1 );
     567
     568                groups_accept_membership_request( null, $u1, $g1 );
     569
     570                // User should now be a group member
     571                $member = groups_is_user_member( $u1, $g1 );
     572                $this->assertTrue( is_numeric( $member ) && $member > 0 );
     573        }
     574
     575        /**
     576         * @group groups_send_invites
     577         * @group group_invitations
     578         * @group group_membership_requests
     579         * @group group_membership
     580         */
     581        public function test_groups_membership_request_plus_invite_equals_member() {
     582                $u1 = $this->factory->user->create();
     583                $u2 = $this->factory->user->create();
     584                $g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
     585
     586                // Create membership request
     587                groups_send_membership_request( $u2, $g1 );
     588
     589                // Create draft invitation
     590                $args = array(
     591                        'user_id'       => $u2,
     592                        'group_id'      => $g1,
     593                        'inviter_id'    => $u1,
     594                        'date_modified' => bp_core_current_time(),
     595                        'is_confirmed'  => 0
     596                );
     597                groups_invite_user( $args );
     598
     599                // Send the invitation
     600                groups_send_invites( $u1, $g1 );
     601
     602                // User should now be a group member
     603                $member = groups_is_user_member( $u2, $g1 );
     604                $this->assertTrue( is_numeric( $member ) && $member > 0 );
     605        }
     606
     607        /**
     608         * @group groups_accept_all_pending_membership_requests
     609         * @group group_membership_requests
     610         * @group group_membership
     611         */
     612        public function test_groups_accept_all_pending_membership_requests() {
     613                $u1 = $this->factory->user->create();
     614                $u2 = $this->factory->user->create();
     615                $u3 = $this->factory->user->create();
     616                $g1 = $this->factory->group->create();
     617
     618                // Create membership request
     619                groups_send_membership_request( $u1, $g1 );
     620                groups_send_membership_request( $u2, $g1 );
     621                groups_send_membership_request( $u3, $g1 );
     622
     623                groups_accept_all_pending_membership_requests( $g1 );
     624
     625                // All users should now be group members.
     626                $members = new BP_Group_Member_Query( array( 'group_id' => $g1 ) );
     627                $this->assertEqualSets( array( $u1, $u2, $u3 ), $members->user_ids );
     628        }
     629}
     630 No newline at end of file