Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
06/29/2015 02:58:47 PM (10 years ago)
Author:
boonebgorges
Message:

Add 'member_typein' and 'member_typenot_in' support to bp_has_members() stack.

Props lakrisgubben.
Fixes #6418.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/testcases/core/class-bp-user-query.php

    r9819 r9976  
    500500
    501501    /**
     502     * @group member_types
     503     */
     504    public function test_member_type__in_single_value() {
     505        bp_register_member_type( 'foo' );
     506        bp_register_member_type( 'bar' );
     507        $users = $this->factory->user->create_many( 3 );
     508        bp_set_member_type( $users[0], 'foo' );
     509        bp_set_member_type( $users[1], 'bar' );
     510
     511        $q = new BP_User_Query( array(
     512            'member_type__in' => 'bar',
     513        ) );
     514
     515        $found = array_values( wp_list_pluck( $q->results, 'ID' ) );
     516        $this->assertEquals( array( $users[1] ), $found );
     517    }
     518
     519    /**
     520     * @group member_types
     521     */
     522    public function test_member_type__in_array_with_single_value() {
     523        bp_register_member_type( 'foo' );
     524        bp_register_member_type( 'bar' );
     525        $users = $this->factory->user->create_many( 3 );
     526        bp_set_member_type( $users[0], 'foo' );
     527        bp_set_member_type( $users[1], 'bar' );
     528
     529        $q = new BP_User_Query( array(
     530            'member_type__in' => array( 'bar' ),
     531        ) );
     532
     533        $found = array_values( wp_list_pluck( $q->results, 'ID' ) );
     534        $this->assertEquals( array( $users[1] ), $found );
     535    }
     536
     537    /**
     538     * @group member_types
     539     */
     540    public function test_member_type__in_comma_separated_values() {
     541        bp_register_member_type( 'foo' );
     542        bp_register_member_type( 'bar' );
     543        $users = $this->factory->user->create_many( 3 );
     544        bp_set_member_type( $users[0], 'foo' );
     545        bp_set_member_type( $users[1], 'bar' );
     546
     547        $q = new BP_User_Query( array(
     548            'member_type__in' => 'foo, bar',
     549        ) );
     550
     551        $found = array_values( wp_list_pluck( $q->results, 'ID' ) );
     552        $this->assertEqualSets( array( $users[0], $users[1] ), $found );
     553    }
     554
     555    /**
     556     * @group member_types
     557     */
     558    public function test_member_type__in_array_with_multiple_values() {
     559        bp_register_member_type( 'foo' );
     560        bp_register_member_type( 'bar' );
     561        $users = $this->factory->user->create_many( 3 );
     562        bp_set_member_type( $users[0], 'foo' );
     563        bp_set_member_type( $users[1], 'bar' );
     564
     565        $q = new BP_User_Query( array(
     566            'member_type__in' => array( 'foo', 'bar' ),
     567        ) );
     568
     569        $found = array_values( wp_list_pluck( $q->results, 'ID' ) );
     570        $this->assertEqualSets( array( $users[0], $users[1] ), $found );
     571    }
     572
     573    /**
     574     * @group member_types
     575     */
     576    public function test_member_type__in_comma_separated_values_should_discard_non_existent_taxonomies() {
     577        bp_register_member_type( 'foo' );
     578        bp_register_member_type( 'bar' );
     579        $users = $this->factory->user->create_many( 3 );
     580        bp_set_member_type( $users[0], 'foo' );
     581        bp_set_member_type( $users[1], 'bar' );
     582
     583        $q = new BP_User_Query( array(
     584            'member_type__in' => 'foo, baz',
     585        ) );
     586
     587        $found = array_values( wp_list_pluck( $q->results, 'ID' ) );
     588        $this->assertEqualSets( array( $users[0] ), $found );
     589    }
     590
     591    /**
     592     * @group member_types
     593     */
     594    public function test_should_return_no_results_when_no_users_match_the_specified_member_type__in() {
     595        bp_register_member_type( 'foo' );
     596        $users = $this->factory->user->create_many( 3 );
     597
     598        $q = new BP_User_Query( array(
     599            'member_type__in' => 'foo, baz',
     600        ) );
     601
     602        $this->assertEmpty( $q->results );
     603    }
     604
     605    /**
     606     * @group member_types
     607     */
     608    public function test_member_type_should_take_precedence_over_member_type__in() {
     609        bp_register_member_type( 'foo' );
     610        bp_register_member_type( 'bar' );
     611        $users = $this->factory->user->create_many( 3 );
     612        bp_set_member_type( $users[0], 'foo' );
     613        bp_set_member_type( $users[1], 'bar' );
     614
     615        $q = new BP_User_Query( array(
     616            'member_type__in' => 'foo',
     617            'member_type' => 'bar'
     618        ) );
     619
     620        $found = array_values( wp_list_pluck( $q->results, 'ID' ) );
     621        $this->assertEqualSets( array( $users[1] ), $found );
     622    }
     623
     624    /**
     625     * @group member_types
     626     */
     627    public function test_member_type__not_in_returns_members_from_other_types_and_members_with_no_types() {
     628        bp_register_member_type( 'foo' );
     629        bp_register_member_type( 'bar' );
     630        $users = $this->factory->user->create_many( 3 );
     631        bp_set_member_type( $users[0], 'foo' );
     632        bp_set_member_type( $users[1], 'bar' );
     633
     634        $q = new BP_User_Query( array(
     635            'member_type__not_in' => 'foo',
     636        ) );
     637
     638        $found = array_values( wp_list_pluck( $q->results, 'ID' ) );
     639        $this->assertEqualSets( array( $users[1], $users[2] ), $found );
     640    }
     641
     642    /**
     643     * @group member_types
     644     */
     645    public function test_should_return_no_results_when_all_users_match_the_specified_member_type__not_in() {
     646        bp_register_member_type( 'foo' );
     647        $users = $this->factory->user->create_many( 3 );
     648        bp_set_member_type( $users[0], 'foo' );
     649        bp_set_member_type( $users[1], 'foo' );
     650        bp_set_member_type( $users[2], 'foo' );
     651
     652        $q = new BP_User_Query( array(
     653            'member_type__not_in' => 'foo',
     654        ) );
     655
     656        $this->assertEmpty( $q->results );
     657    }
     658
     659    /**
     660     * @group member_types
     661     */
     662    public function test_member_type__not_in_takes_precedence_over_member_type() {
     663        bp_register_member_type( 'foo' );
     664        $users = $this->factory->user->create_many( 3 );
     665        bp_set_member_type( $users[0], 'foo' );
     666        bp_set_member_type( $users[1], 'foo' );
     667        bp_set_member_type( $users[2], 'foo' );
     668
     669        $q = new BP_User_Query( array(
     670            'member_type__not_in' => 'foo',
     671            'member_type' => 'foo'
     672        ) );
     673
     674        $this->assertEmpty( $q->results );
     675    }
     676
     677    /**
     678     * @group member_types
     679     */
     680    public function test_member_type__not_in_takes_precedence_over_member_type__in() {
     681        bp_register_member_type( 'foo' );
     682        $users = $this->factory->user->create_many( 3 );
     683        bp_set_member_type( $users[0], 'foo' );
     684        bp_set_member_type( $users[1], 'foo' );
     685        bp_set_member_type( $users[2], 'foo' );
     686
     687        $q = new BP_User_Query( array(
     688            'member_type__not_in' => 'foo',
     689            'member_type__in' => 'foo'
     690        ) );
     691
     692        $this->assertEmpty( $q->results );
     693    }
     694
     695    /**
    502696     * @group cache
    503697     * @group member_types
Note: See TracChangeset for help on using the changeset viewer.