Skip to:
Content

BuddyPress.org

Changeset 8538


Ignore:
Timestamp:
06/16/2014 08:26:35 PM (9 years ago)
Author:
boonebgorges
Message:

Add some tests for BP_Group_Extension enable_nav_item and visibility

See #4785

Location:
trunk/tests/phpunit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/assets/group-extensions.php

    r7490 r8538  
    147147    function edit_screen_save( $group_id = null ) {}
    148148}
     149
     150class BPTest_Group_Extension_Enable_Nav_Item_True extends BP_Group_Extension {
     151    public function __construct() {
     152        $class_name = get_class( $this );
     153
     154        $args = array(
     155            'name' => $class_name,
     156            'slug' => sanitize_title( $class_name ),
     157            'enable_nav_item' => true,
     158        );
     159
     160        parent::init( $args );
     161    }
     162}
     163
     164class BPTest_Group_Extension_Enable_Nav_Item_False extends BP_Group_Extension {
     165    public function __construct() {
     166        $class_name = get_class( $this );
     167
     168        $args = array(
     169            'name' => $class_name,
     170            'slug' => sanitize_title( $class_name ),
     171            'enable_nav_item' => false,
     172        );
     173
     174        parent::init( $args );
     175    }
     176}
     177
     178class BPTest_Group_Extension_Visibility_Private extends BP_Group_Extension {
     179    public function __construct() {
     180        $class_name = get_class( $this );
     181
     182        $args = array(
     183            'name' => $class_name,
     184            'slug' => sanitize_title( $class_name ),
     185            'visibility' => 'private',
     186        );
     187
     188        parent::init( $args );
     189    }
     190}
     191
     192class BPTest_Group_Extension_Visibility_Public extends BP_Group_Extension {
     193    public function __construct() {
     194        $class_name = get_class( $this );
     195
     196        $args = array(
     197            'name' => $class_name,
     198            'slug' => sanitize_title( $class_name ),
     199            'visibility' => 'public',
     200        );
     201
     202        parent::init( $args );
     203    }
     204}
  • trunk/tests/phpunit/testcases/groups/class-bp-group-extension.php

    r7332 r8538  
    223223        $this->assertTrue( BP_Group_Extension::has_submit_button( $c ) );
    224224    }
     225
     226    /**
     227     * @group enable_nav_item
     228     */
     229    public function test_enable_nav_item_true() {
     230        $old_options_nav = buddypress()->bp_options_nav;
     231
     232        $g = $this->factory->group->create();
     233        $g_obj = groups_get_group( array( 'group_id' => $g ) );
     234
     235        $class_name = 'BPTest_Group_Extension_Enable_Nav_Item_True';
     236        $e = new $class_name();
     237
     238        $this->go_to( bp_get_group_permalink( $g_obj ) );
     239
     240        $e->_register();
     241
     242        $this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
     243
     244        // Clean up
     245        buddypress()->bp_options_nav = $old_options_nav;
     246    }
     247
     248    /**
     249     * @group enable_nav_item
     250     */
     251    public function test_enable_nav_item_false() {
     252        $old_options_nav = buddypress()->bp_options_nav;
     253
     254        $g = $this->factory->group->create();
     255        $g_obj = groups_get_group( array( 'group_id' => $g ) );
     256
     257        $class_name = 'BPTest_Group_Extension_Enable_Nav_Item_False';
     258        $e = new $class_name();
     259
     260        $this->go_to( bp_get_group_permalink( $g_obj ) );
     261
     262        $e->_register();
     263
     264        $this->assertFalse( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
     265
     266        // Clean up
     267        buddypress()->bp_options_nav = $old_options_nav;
     268    }
     269
     270    /**
     271     * @group visibility
     272     */
     273    public function test_visibility_private() {
     274        $old_options_nav = buddypress()->bp_options_nav;
     275        $old_current_user = get_current_user_id();
     276
     277        $g = $this->factory->group->create( array(
     278            'status' => 'private',
     279        ) );
     280        $g_obj = groups_get_group( array( 'group_id' => $g ) );
     281
     282        $class_name = 'BPTest_Group_Extension_Visibility_Private';
     283        $e = new $class_name();
     284
     285        // Test as non-logged-in user
     286        $this->set_current_user( 0 );
     287        $this->go_to( bp_get_group_permalink( $g_obj ) );
     288        $e->_register();
     289        $this->assertFalse( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
     290
     291        // Clean up
     292        buddypress()->bp_options_nav = $old_options_nav;
     293
     294        // Test as group member
     295        $u = $this->create_user();
     296        $this->set_current_user( $u );
     297        $this->add_user_to_group( $u, $g );
     298        $this->go_to( bp_get_group_permalink( $g_obj ) );
     299        $e->_register();
     300        $this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
     301
     302        // Clean up
     303        buddypress()->bp_options_nav = $old_options_nav;
     304        $this->set_current_user( $old_current_user );
     305    }
     306
     307    /**
     308     * @group visibility
     309     *
     310     * visibility=public + status=private results in adding the item to
     311     * the nav. However, BP_Groups_Component::setup_globals() bounces the
     312     * user away from this page on a regular pageload (BP 2.0 and under)
     313     *
     314     * @see https://buddypress.trac.wordpress.org/ticket/4785
     315     */
     316    public function test_visibility_public() {
     317        $old_options_nav = buddypress()->bp_options_nav;
     318        $old_current_user = get_current_user_id();
     319
     320        $g = $this->factory->group->create( array(
     321            'status' => 'private',
     322        ) );
     323        $g_obj = groups_get_group( array( 'group_id' => $g ) );
     324
     325        $class_name = 'BPTest_Group_Extension_Visibility_Public';
     326        $e = new $class_name();
     327
     328        // Test as non-logged-in user
     329        $this->set_current_user( 0 );
     330        $this->go_to( bp_get_group_permalink( $g_obj ) );
     331        $e->_register();
     332        $this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
     333
     334        // Clean up
     335        buddypress()->bp_options_nav = $old_options_nav;
     336
     337        // Test as group member
     338        $u = $this->create_user();
     339        $this->set_current_user( $u );
     340        $this->add_user_to_group( $u, $g );
     341        $this->go_to( bp_get_group_permalink( $g_obj ) );
     342        $e->_register();
     343        $this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
     344
     345        // Clean up
     346        buddypress()->bp_options_nav = $old_options_nav;
     347        $this->set_current_user( $old_current_user );
     348    }
    225349}
Note: See TracChangeset for help on using the changeset viewer.