diff --git tests/phpunit/testcases/groups/class-bp-groups-member.php tests/phpunit/testcases/groups/class-bp-groups-member.php
index 7608130..462a996 100644
--- tests/phpunit/testcases/groups/class-bp-groups-member.php
+++ tests/phpunit/testcases/groups/class-bp-groups-member.php
@@ -223,5 +223,407 @@ class BP_Tests_BP_Groups_Member_TestCases extends BP_UnitTestCase {
 
 		$this->set_current_user( $old_current_user );
 	}
-}
 
+	/**
+	 * @group groups_get_invites_for_user
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_get_invites_for_user() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		self::invite_user_to_group( $u2, $g1, $u1 );
+		self::invite_user_to_group( $u2, $g2, $u1 );
+		self::invite_user_to_group( $u2, $g3, $u1 );
+
+		$groups = groups_get_invites_for_user( $u2 );
+
+		$this->assertEqualSets( array( $g1, $g2, $g3 ), wp_list_pluck( $groups['groups'], 'id' ) );
+	}
+
+	/**
+	 * @group groups_get_invites_for_user
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_get_invites_for_user_infer_user() {
+		$old_current_user = get_current_user_id();
+
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		self::invite_user_to_group( $u2, $g1, $u1 );
+		self::invite_user_to_group( $u2, $g2, $u1 );
+		self::invite_user_to_group( $u2, $g3, $u1 );
+
+		$this->set_current_user( $u2 );
+		$groups = groups_get_invites_for_user();
+		$this->assertEqualSets( array( $g1, $g2, $g3 ), wp_list_pluck( $groups['groups'], 'id' ) );
+
+		$this->set_current_user( $old_current_user );
+	}
+
+	/**
+	 * @group groups_get_invites_for_user
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_get_invites_for_user_with_exclude() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		self::invite_user_to_group( $u2, $g1, $u1 );
+		self::invite_user_to_group( $u2, $g2, $u1 );
+		self::invite_user_to_group( $u2, $g3, $u1 );
+
+		$groups = groups_get_invites_for_user( $u2, $limit = false, $page = false, $exclude = array( $g2 ) );
+		$this->assertEqualSets( array( $g1, $g3 ), wp_list_pluck( $groups['groups'], 'id' ) );
+	}
+
+	/**
+	 * @group groups_get_invite_count_for_user
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_get_invite_count_for_user() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g2 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+		$g3 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		self::invite_user_to_group( $u2, $g1, $u1 );
+		self::invite_user_to_group( $u2, $g2, $u1 );
+		self::invite_user_to_group( $u2, $g3, $u1 );
+
+		$this->assertEquals( 3, groups_get_invite_count_for_user( $u2 ) );
+	}
+
+	/**
+	 * @group groups_get_invite_count_for_user
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_get_invite_count_for_user_ignore_drafts() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		$args = array(
+			'user_id'       => $u2,
+			'group_id'      => $g1,
+			'inviter_id'    => $u1,
+			'date_modified' => bp_core_current_time(),
+			'is_confirmed'  => 0
+		);
+		// Create draft invitation.
+		groups_invite_user( $args );
+
+		// groups_get_invite_count_for_user should ignore draft invitations.
+		$this->assertEquals( 0, groups_get_invite_count_for_user( $u2 ) );
+	}
+
+	/**
+	 * @group groups_invite_user
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_invite_user() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		// Create draft invitation
+		$args = array(
+			'user_id'       => $u2,
+			'group_id'      => $g1,
+			'inviter_id'    => $u1,
+			'date_modified' => bp_core_current_time(),
+			'is_confirmed'  => 0
+		);
+		groups_invite_user( $args );
+
+		// Check that the draft invitation has been created.
+		$draft = groups_check_user_has_invite( $u2, $g1, $type = 'all' );
+		$this->assertTrue( is_numeric( $draft ) && $draft > 0 );
+	}
+
+	/**
+	 * @group groups_send_invites
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_send_invites() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		// Create draft invitation
+		$args = array(
+			'user_id'       => $u2,
+			'group_id'      => $g1,
+			'inviter_id'    => $u1,
+			'date_modified' => bp_core_current_time(),
+			'is_confirmed'  => 0
+		);
+		groups_invite_user( $args );
+
+		// Send the invitation
+		groups_send_invites( $u1, $g1 );
+		// Check that the invitation has been sent.
+		$sent = groups_check_user_has_invite( $u2, $g1, $type = 'sent' );
+		$this->assertTrue( is_numeric( $sent ) && $sent > 0 );
+	}
+
+	/**
+	 * @group groups_accept_invite
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_accept_invite() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		// Create draft invitation
+		$args = array(
+			'user_id'       => $u2,
+			'group_id'      => $g1,
+			'inviter_id'    => $u1,
+			'date_modified' => bp_core_current_time(),
+			'is_confirmed'  => 0
+		);
+		groups_invite_user( $args );
+
+		// Send the invitation
+		groups_send_invites( $u1, $g1 );
+
+		// Accept the invitation
+		groups_accept_invite( $u2, $g1 );
+
+		// Check that the user is a member of the group.
+		$member = groups_is_user_member( $u2, $g1 );
+		$this->assertTrue( is_numeric( $member ) && $member > 0 );
+		// Check that the invite has been removed.
+		$invite = groups_check_user_has_invite( $u2, $g1, $type = 'all' );
+		$this->assertTrue( is_null( $invite ) );
+	}
+
+	/**
+	 * @group groups_accept_invite
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_accept_invite_removes_membership_requests() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		// Create draft invitation
+		$args = array(
+			'user_id'       => $u2,
+			'group_id'      => $g1,
+			'inviter_id'    => $u1,
+			'date_modified' => bp_core_current_time(),
+			'is_confirmed'  => 0
+		);
+		groups_invite_user( $args );
+
+		// Create membership request
+		groups_send_membership_request( $u2, $g1 );
+		$request = groups_check_for_membership_request( $u2, $g1 );
+		$this->assertTrue( is_numeric( $request ) && $request > 0 );
+
+		// Send the invitation
+		groups_send_invites( $u1, $g1 );
+
+		// Accept the invitation
+		groups_accept_invite( $u2, $g1 );
+
+		// Check that the membership request has been removed.
+		$this->assertTrue( 0 == groups_check_for_membership_request( $u2, $g1 ) );
+	}
+
+	/**
+	 * @group groups_send_invites
+	 * @group group_invitations
+	 * @group group_membership_requests
+	 * @group group_membership
+	 */
+	public function test_groups_sent_invite_plus_request_equals_member() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		// Create draft invitation
+		$args = array(
+			'user_id'       => $u2,
+			'group_id'      => $g1,
+			'inviter_id'    => $u1,
+			'date_modified' => bp_core_current_time(),
+			'is_confirmed'  => 0
+		);
+		groups_invite_user( $args );
+
+		// Send the invitation
+		groups_send_invites( $u1, $g1 );
+
+		// Create membership request
+		groups_send_membership_request( $u2, $g1 );
+
+		// User should now be a group member
+		$member = groups_is_user_member( $u2, $g1 );
+		$this->assertTrue( is_numeric( $member ) && $member > 0 );
+	}
+
+	/**
+	 * @group groups_delete_all_group_invites
+	 * @group group_invitations
+	 * @group group_membership
+	 */
+	public function test_groups_delete_all_group_invites() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$u3 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		self::invite_user_to_group( $u2, $g1, $u1 );
+		self::invite_user_to_group( $u3, $g1, $u1 );
+
+		groups_delete_all_group_invites( $g1 );
+
+		// Get group invitations of any type, from any user in the group.
+		$args = array(
+			'group_id'     => $g1,
+			'is_confirmed' => 0,
+			'invite_sent'  => null,
+			'inviter_id'   => 'any',
+		);
+		$invitees = new BP_Group_Member_Query( $args );
+
+		$this->assertTrue( empty( $invitees->results ) );
+	}
+
+	/**
+	 * @group groups_send_membership_request
+	 * @group group_membership_requests
+	 * @group group_membership
+	 */
+	public function test_groups_send_membership_request() {
+		$u1 = $this->factory->user->create();
+		$g1 = $this->factory->group->create();
+
+		// Create membership request
+		groups_send_membership_request( $u1, $g1 );
+
+		$request = groups_check_for_membership_request( $u1, $g1 );
+		$this->assertTrue( is_numeric( $request ) && $request > 0 );
+	}
+
+	/**
+	 * @group groups_accept_membership_request
+	 * @group group_membership_requests
+	 * @group group_membership
+	 */
+	public function test_groups_accept_membership_request_by_membership_id() {
+		$u1 = $this->factory->user->create();
+		$g1 = $this->factory->group->create();
+
+		// Create membership request
+		groups_send_membership_request( $u1, $g1 );
+
+		// Get group invitations of any type, from any user in the group.
+		$member = new BP_Groups_Member( $u1, $g1 );
+
+		groups_accept_membership_request( $member->id );
+
+		// User should now be a group member.
+		$member = groups_is_user_member( $u1, $g1 );
+
+		$this->assertTrue( is_numeric( $member ) && $member > 0 );
+	}
+
+	/**
+	 * @group groups_accept_membership_request
+	 * @group group_membership_requests
+	 * @group group_membership
+	 */
+	public function test_groups_accept_membership_request_by_user_id_group_id() {
+		$u1 = $this->factory->user->create();
+		$g1 = $this->factory->group->create();
+
+		// Create membership request
+		groups_send_membership_request( $u1, $g1 );
+
+		groups_accept_membership_request( null, $u1, $g1 );
+
+		// User should now be a group member
+		$member = groups_is_user_member( $u1, $g1 );
+		$this->assertTrue( is_numeric( $member ) && $member > 0 );
+	}
+
+	/**
+	 * @group groups_send_invites
+	 * @group group_invitations
+	 * @group group_membership_requests
+	 * @group group_membership
+	 */
+	public function test_groups_membership_request_plus_invite_equals_member() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$g1 = $this->factory->group->create( array( 'creator_id' => $u1 ) );
+
+		// Create membership request
+		groups_send_membership_request( $u2, $g1 );
+
+		// Create draft invitation
+		$args = array(
+			'user_id'       => $u2,
+			'group_id'      => $g1,
+			'inviter_id'    => $u1,
+			'date_modified' => bp_core_current_time(),
+			'is_confirmed'  => 0
+		);
+		groups_invite_user( $args );
+
+		// Send the invitation
+		groups_send_invites( $u1, $g1 );
+
+		// User should now be a group member
+		$member = groups_is_user_member( $u2, $g1 );
+		$this->assertTrue( is_numeric( $member ) && $member > 0 );
+	}
+
+	/**
+	 * @group groups_accept_all_pending_membership_requests
+	 * @group group_membership_requests
+	 * @group group_membership
+	 */
+	public function test_groups_accept_all_pending_membership_requests() {
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$u3 = $this->factory->user->create();
+		$g1 = $this->factory->group->create();
+
+		// Create membership request
+		groups_send_membership_request( $u1, $g1 );
+		groups_send_membership_request( $u2, $g1 );
+		groups_send_membership_request( $u3, $g1 );
+
+		groups_accept_all_pending_membership_requests( $g1 );
+
+		// All users should now be group members.
+		$members = new BP_Group_Member_Query( array( 'group_id' => $g1 ) );
+		$this->assertEqualSets( array( $u1, $u2, $u3 ), $members->user_ids );
+	}
+}
\ No newline at end of file
