assertSame( 0, $friendship->id ); } public function test_search_friends() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); $u3 = self::factory()->user->create(); xprofile_set_field_data( 1, $u2, 'Cool Dude' ); xprofile_set_field_data( 1, $u3, 'Rock And Roll America Yeah' ); friends_add_friend( $u1, $u2, true ); friends_add_friend( $u1, $u3, true ); $friends = BP_Friends_Friendship::search_friends( 'Coo', $u1 ); $this->assertSame( array( $u2 ), $friends['friends'] ); } /** * @ticket BP6546 */ public function test_search_friends_with_xprofile_inactive() { $this->deactivate_component( 'xprofile' ); $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); $u3 = self::factory()->user->create(); add_user_meta( $u2, 'nickname', 'Cool Dude' ); add_user_meta( $u3, 'nickname', 'Rock And Roll America Yeah' ); friends_add_friend( $u1, $u2, true ); friends_add_friend( $u1, $u3, true ); $friends = BP_Friends_Friendship::search_friends( 'Coo', $u1 ); $this->assertSame( array( $u2 ), $friends['friends'] ); } public function test_get_bulk_last_active() { $u1 = self::factory()->user->create( array( 'last_activity' => gmdate( 'Y-m-d H:i:s' ), ) ); $u2 = self::factory()->user->create( array( 'last_activity' => gmdate( 'Y-m-d H:i:s', time() - 1000 ), ) ); $u3 = self::factory()->user->create( array( 'last_activity' => gmdate( 'Y-m-d H:i:s', time() - 50 ), ) ); $friends = BP_Friends_Friendship::get_bulk_last_active( array( $u1, $u2, $u3, 'junk' ) ); $friend_ids = wp_list_pluck( $friends, 'user_id' ); $this->assertSame( array( $u1, $u3, $u2 ), $friend_ids ); } public function test_search_users() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); $u3 = self::factory()->user->create(); xprofile_set_field_data( 1, $u1, 'Freedom Isn\'t Free' ); xprofile_set_field_data( 1, $u2, 'Cool Dude' ); xprofile_set_field_data( 1, $u3, 'Rock And Roll America Yeah' ); // Needs a user_id param though it does nothing $friends = BP_Friends_Friendship::search_users( 'Coo', 1 ); $this->assertSame( array( $u2 ), $friends ); } public function test_search_users_count() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); $u3 = self::factory()->user->create(); xprofile_set_field_data( 1, $u1, 'Freedom Isn\'t Free' ); xprofile_set_field_data( 1, $u2, 'Cool Dude' ); xprofile_set_field_data( 1, $u3, 'Rock And Roll America Yeah' ); // Needs a user_id param though it does nothing $friends = BP_Friends_Friendship::search_users_count( 'Coo' ); $this->assertSame( 1, $friends ); } /** * @group check_is_friend */ public function test_check_is_friend_not_friends() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); $this->assertSame( 'not_friends', BP_Friends_Friendship::check_is_friend( $u1, $u2 ) ); } /** * @group check_is_friend */ public function test_check_is_friend_pending() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); friends_add_friend( $u1, $u2, false ); $this->assertSame( 'pending', BP_Friends_Friendship::check_is_friend( $u1, $u2 ) ); } /** * @group check_is_friend */ public function test_check_is_friend_awaiting_response() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); friends_add_friend( $u1, $u2, false ); $this->assertSame( 'awaiting_response', BP_Friends_Friendship::check_is_friend( $u2, $u1 ) ); } /** * @group check_is_friend */ public function test_check_is_friend_is_friend() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); friends_add_friend( $u1, $u2, true ); $this->assertSame( 'is_friend', BP_Friends_Friendship::check_is_friend( $u1, $u2 ) ); } /** * @group BP6247 */ public function test_save_method_should_update_existing_row() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); $friendship = new BP_Friends_Friendship(); $friendship->initiator_user_id = $u1; $friendship->friend_user_id = $u2; $friendship->is_confirmed = 0; $friendship->is_limited = 0; $friendship->date_created = bp_core_current_time(); $friendship->is_confirmed = 1; $friendship->save(); $fid = $friendship->id; $f = new BP_Friends_Friendship( $fid ); $f->is_confirmed = 1; $f->save(); $f2 = new BP_Friends_Friendship( $fid ); $this->assertSame( 1, $f2->is_confirmed ); } /** * @group friendship_caching */ public function test_new_bp_friends_friendship_object_should_hit_friendship_object_cache() { global $wpdb; $now = time(); $u1 = self::factory()->user->create( array( 'last_activity' => date( 'Y-m-d H:i:s', $now ), ) ); $u2 = self::factory()->user->create( array( 'last_activity' => date( 'Y-m-d H:i:s', $now - 100 ), ) ); friends_add_friend( $u1, $u2, true ); $fid = friends_get_friendship_id( $u1, $u2 ); $friendship_obj = new BP_Friends_Friendship( $fid, false, false ); $first_query_count = $wpdb->num_queries; // Create it again. $friendship_obj = new BP_Friends_Friendship( $fid, false, false ); $this->assertSame( $first_query_count, $wpdb->num_queries ); } /** * @ticket BP8844 */ public function test_get_random_friends() { $user_id = self::factory()->user->create(); $friends = self::factory()->user->create_many( 4 ); foreach ( $friends as $initiator_id ) { friends_add_friend( $initiator_id, $user_id, true ); } $random = BP_Friends_Friendship::get_random_friends( $user_id, 4 ); $this->assertNotContains( $user_id, $random, 'The requested user id should not be listed into random friends' ); $this->assertCount( 4, $random ); } /** * @ticket BP8844 */ public function test_get_friend_user_ids() { $user_id = self::factory()->user->create(); $friends = self::factory()->user->create_many( 4 ); foreach ( $friends as $initiator_id ) { friends_add_friend( $initiator_id, $user_id, true ); } $friend_user_ids = BP_Friends_Friendship::get_friend_user_ids( $user_id ); $this->assertNotContains( $user_id, $friend_user_ids, 'The requested user id should not be listed into random friends' ); $this->assertCount( 4, $friend_user_ids ); } /** * @ticket BP8844 */ public function test_delete_all_for_user() { $user_id = self::factory()->user->create(); $friends = self::factory()->user->create_many( 4 ); foreach ( $friends as $initiator_id ) { friends_add_friend( $initiator_id, $user_id, true ); } BP_Friends_Friendship::delete_all_for_user( $user_id ); $friend_user_ids = BP_Friends_Friendship::get_friendship_ids_for_user( $user_id ); $this->assertEmpty( $friend_user_ids ); } /** * @ticket BP8844 */ public function test_get_friendships() { $u1 = self::factory()->user->create(); $u2 = self::factory()->user->create(); $u3 = self::factory()->user->create(); friends_add_friend( $u2, $u1, false ); friends_add_friend( $u3, $u1, true ); $friendships = BP_Friends_Friendship::get_friendships( $u1, array( 'initiator_user_id' => $u2 ), 'not' ); $friendship = reset( $friendships ); $this->assertSame( $u3, $friendship->initiator_user_id ); $this->assertCount( 1, $friendships ); $friendships = BP_Friends_Friendship::get_friendships( $u1, array( 'initiator_user_id' => $u3, 'is_confirmed' => 0 ), 'or' ); $this->assertCount( 2, $friendships ); } }