Skip to:
Content

BuddyPress.org

Changeset 7090


Ignore:
Timestamp:
05/19/2013 02:40:13 AM (13 years ago)
Author:
boonebgorges
Message:

Adds unit tests for bp_group_has_members()

These will help ensure that any refactoring associated with #4482 will not
break backward compatibility.

Location:
trunk/tests
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/includes/testcase.php

    r7061 r7090  
    224224    }
    225225
     226    public static function add_user_to_group( $user_id, $group_id ) {
     227        $new_member                = new BP_Groups_Member;
     228        $new_member->group_id      = $group_id;
     229        $new_member->user_id       = $user_id;
     230        $new_member->inviter_id    = 0;
     231        $new_member->is_admin      = 0;
     232        $new_member->user_title    = '';
     233        $new_member->date_modified = bp_core_current_time();
     234        $new_member->is_confirmed  = 1;
     235
     236        $new_member->save();
     237        return $new_member->id;
     238    }
     239
    226240    /**
    227241     * We can't use grant_super_admin() because we will need to modify
  • trunk/tests/testcases/core/class-bp-user-query.php

    r7039 r7090  
    33/**
    44 * @group core
     5 * @group BP_User_Query
    56 */
    67class BP_Tests_BP_User_Query_TestCases extends BP_UnitTestCase {
  • trunk/tests/testcases/groups/class-bp-groups-group.php

    r7087 r7090  
    1212    }
    1313
    14     public static function add_user_to_group( $user_id, $group_id ) {
    15         $new_member                = new BP_Groups_Member;
    16         $new_member->group_id      = $group_id;
    17         $new_member->user_id       = $user_id;
    18         $new_member->inviter_id    = 0;
    19         $new_member->is_admin      = 0;
    20         $new_member->user_title    = '';
    21         $new_member->date_modified = bp_core_current_time();
    22         $new_member->is_confirmed  = 1;
    23 
    24         $new_member->save();
    25         return $new_member->id;
    26     }
    27 
    2814    /** get() ************************************************************/
    2915
  • trunk/tests/testcases/groups/template.php

    r7087 r7090  
    9898    }
    9999
     100    /**
     101     * @group bp_group_has_members
     102     */
     103    public function test_bp_group_has_members_vanilla() {
     104        $g = $this->factory->group->create();
     105        $u1 = $this->create_user();
     106        $u2 = $this->create_user();
     107
     108        $this->add_user_to_group( $u1, $g );
     109
     110        global $members_template;
     111        bp_group_has_members( array(
     112            'group_id' => $g,
     113        ) );
     114
     115        $ids = wp_parse_id_list( wp_list_pluck( $members_template->members, 'user_id' ) );
     116        $this->assertEquals( array( $u1, ), $ids );
     117    }
     118
     119    /**
     120     * @group bp_group_has_members
     121     */
     122    public function test_bp_group_has_members_with_per_page() {
     123        $g = $this->factory->group->create();
     124
     125        $users = array();
     126        for ( $i = 1; $i <= 10; $i++ ) {
     127            $users[ $i ] = $this->create_user();
     128        }
     129
     130        $expected = array();
     131        for ( $i = 3; $i <= 10; $i++ ) {
     132            $this->add_user_to_group( $users[ $i ], $g );
     133            $expected[] = $users[ $i ];
     134        }
     135
     136        // hack it down to 5 (per page arg below)
     137        $expected = array_slice( $expected, 0, 5 );
     138
     139        global $members_template;
     140        bp_group_has_members( array(
     141            'group_id' => $g,
     142            'per_page' => 5,
     143        ) );
     144
     145        $ids = wp_parse_id_list( wp_list_pluck( $members_template->members, 'user_id' ) );
     146        $this->assertEquals( $expected, $ids );
     147    }
     148
     149    /**
     150     * Note: 'max' is a weird parameter. It just changes the member_count
     151     * in the global - not the sql query at all. I'm testing what it
     152     * appears to be designed to do, not what it feels like it ought to do
     153     * if it made any sense. Programming is fun, QED.
     154     *
     155     * @group bp_group_has_members
     156     */
     157    public function test_bp_group_has_members_with_max() {
     158        $g = $this->factory->group->create();
     159
     160        $users = array();
     161        for ( $i = 1; $i <= 10; $i++ ) {
     162            $users[ $i ] = $this->create_user();
     163        }
     164
     165        $expected = array();
     166        for ( $i = 3; $i <= 10; $i++ ) {
     167            $this->add_user_to_group( $users[ $i ], $g );
     168            $expected[] = $users[ $i ];
     169        }
     170
     171        global $members_template;
     172        bp_group_has_members( array(
     173            'group_id' => $g,
     174            'max' => 5,
     175        ) );
     176
     177        $this->assertEquals( 5, $members_template->member_count );
     178    }
     179
     180    /**
     181     * @group bp_group_has_members
     182     */
     183    public function test_bp_group_has_members_with_exclude() {
     184        $g = $this->factory->group->create();
     185        $u1 = $this->create_user();
     186        $u2 = $this->create_user();
     187
     188        $this->add_user_to_group( $u1, $g );
     189        $this->add_user_to_group( $u2, $g );
     190
     191        global $members_template;
     192        bp_group_has_members( array(
     193            'group_id' => $g,
     194            'exclude' => $u1,
     195        ) );
     196
     197        $ids = wp_parse_id_list( wp_list_pluck( $members_template->members, 'user_id' ) );
     198        $this->assertEquals( array( $u2 ), $ids );
     199    }
     200
     201    /**
     202     * @group bp_group_has_members
     203     */
     204    public function test_bp_group_has_members_with_exclude_admins_mods_1() {
     205        $g = $this->factory->group->create();
     206        $u1 = $this->create_user();
     207        $u2 = $this->create_user();
     208        $u3 = $this->create_user();
     209
     210        $this->add_user_to_group( $u1, $g );
     211        $this->add_user_to_group( $u2, $g );
     212        $this->add_user_to_group( $u3, $g );
     213
     214        $m1 = new BP_Groups_Member( $u1, $g );
     215        $m1->promote( 'admin' );
     216        $m2 = new BP_Groups_Member( $u2, $g );
     217        $m2->promote( 'mod' );
     218
     219        global $members_template;
     220        bp_group_has_members( array(
     221            'group_id' => $g,
     222            'exclude_admins_mods' => 1,
     223        ) );
     224
     225        $ids = wp_parse_id_list( wp_list_pluck( $members_template->members, 'user_id' ) );
     226        $this->assertEquals( array( $u3 ), $ids );
     227    }
     228
     229    /**
     230     * @group bp_group_has_members
     231     */
     232    public function test_bp_group_has_members_with_exclude_admins_mods_0() {
     233        $g = $this->factory->group->create();
     234        $u1 = $this->create_user();
     235        $u2 = $this->create_user();
     236        $u3 = $this->create_user();
     237
     238        $this->add_user_to_group( $u1, $g );
     239        $this->add_user_to_group( $u2, $g );
     240        $this->add_user_to_group( $u3, $g );
     241
     242        $m1 = new BP_Groups_Member( $u1, $g );
     243        $m1->promote( 'admin' );
     244        $m2 = new BP_Groups_Member( $u2, $g );
     245        $m2->promote( 'mod' );
     246
     247        global $members_template;
     248        bp_group_has_members( array(
     249            'group_id' => $g,
     250            'exclude_admins_mods' => 0,
     251        ) );
     252
     253        $ids = wp_parse_id_list( wp_list_pluck( $members_template->members, 'user_id' ) );
     254        $this->assertEquals( array( $u1, $u2, $u3 ), $ids );
     255    }
     256
     257    /**
     258     * @group bp_group_has_members
     259     */
     260    public function test_bp_group_has_members_with_exclude_banned_1() {
     261        $g = $this->factory->group->create();
     262        $u1 = $this->create_user();
     263        $u2 = $this->create_user();
     264
     265        $this->add_user_to_group( $u1, $g );
     266        $this->add_user_to_group( $u2, $g );
     267
     268        $m1 = new BP_Groups_Member( $u1, $g );
     269        $m1->ban();
     270
     271        global $members_template;
     272        bp_group_has_members( array(
     273            'group_id' => $g,
     274            'exclude_banned' => 1,
     275        ) );
     276
     277        $ids = wp_parse_id_list( wp_list_pluck( $members_template->members, 'user_id' ) );
     278        $this->assertEquals( array( $u2, ), $ids );
     279    }
     280
     281    /**
     282     * @group bp_group_has_members
     283     */
     284    public function test_bp_group_has_members_with_exclude_banned_0() {
     285        $g = $this->factory->group->create();
     286        $u1 = $this->create_user();
     287        $u2 = $this->create_user();
     288
     289        $this->add_user_to_group( $u1, $g );
     290        $this->add_user_to_group( $u2, $g );
     291
     292        $m1 = new BP_Groups_Member( $u1, $g );
     293        $m1->ban();
     294
     295        global $members_template;
     296        bp_group_has_members( array(
     297            'group_id' => $g,
     298            'exclude_banned' => 0,
     299        ) );
     300
     301        $ids = wp_parse_id_list( wp_list_pluck( $members_template->members, 'user_id' ) );
     302        $this->assertEquals( array( $u1, $u2, ), $ids );
     303    }
     304
    100305}
Note: See TracChangeset for help on using the changeset viewer.