1
0
Fork 0
mirror of https://github.com/buddypress/buddypress.git synced 2026-07-22 20:56:55 +08:00
buddypress/tests/phpunit/testcases/groups/class-bp-group-extension.php
Boone B Gorges 0ed016254c Use static factory method throughout PHPUnit tests.
See #7620.

git-svn-id: https://buddypress.svn.wordpress.org/trunk@11737 cdf35c40-ae34-48e0-9cc9-0c9da1808c22
2017-11-03 19:44:10 +00:00

890 lines
25 KiB
PHP

<?php
include_once BP_TESTS_DIR . '/assets/group-extensions.php';
/**
* @group groups
* @group BP_Group_Extension
*/
class BP_Tests_Group_Extension_TestCases extends BP_UnitTestCase {
public function test_parse_legacy_properties() {
$class_name = 'BPTest_Group_Extension_Parse_Legacy_Properties';
$class_slug = sanitize_title( $class_name );
$e = new $class_name();
$e->_register();
// Test most items separately so we can ignore irrelevant props
$l = $e->_get_legacy_properties_converted();
$this->assertEquals( $l['name'], $class_name );
$this->assertEquals( $l['slug'], $class_slug );
$this->assertEquals( $l['visibility'], 'private' );
$this->assertEquals( $l['nav_item_position'], 63 );
$this->assertEquals( $l['enable_nav_item'], true );
$this->assertEquals( $l['nav_item_name'], $class_name . ' Nav' );
$this->assertEquals( $l['display_hook'], 'foo_hook' );
$this->assertEquals( $l['template_file'], 'foo_template' );
// Build the screens array manually
$expected = array(
'create' => array(
'name' => $class_name . ' Create',
'slug' => $class_slug . '-create',
'position' => 58,
'enabled' => false,
),
'edit' => array(
'name' => $class_name . ' Edit',
'slug' => $class_slug . '-edit',
'enabled' => false,
),
'admin' => array(
'enabled' => true,
'metabox_context' => 'high',
'metabox_priority' => 'side',
),
);
$this->assertEquals( $expected, $l['screens'] );
}
public function test_setup_screens_use_global_fallbacks() {
$class_name = 'BPTest_Group_Extension_Setup_Screens_Use_Global_Fallbacks';
$e = new $class_name();
$e->_setup_class_info();
$screens = $e->_get_default_screens();
$fallback = array(
'screen_callback' => array( $e, 'settings_screen' ),
'screen_save_callback' => array( $e, 'settings_screen_save' ),
);
$fallbacks = array(
'create' => $fallback,
'edit' => $fallback,
'admin' => $fallback,
);
// strip everything from the screens array but what we we're
// testing
foreach ( $screens as &$screen ) {
foreach ( $screen as $k => $v ) {
if ( ! in_array( $k, array( 'screen_callback', 'screen_save_callback' ) ) ) {
unset( $screen[ $k ] );
}
}
}
$this->assertEquals( $fallbacks, $screens );
}
public function test_setup_screens_define_edit_screens_locally() {
$class_name = 'BPTest_Group_Extension_Setup_Screens_Define_Edit_Screens_Locally';
$e = new $class_name();
$e->_setup_class_info();
$screens = $e->_get_default_screens();
$fallback = array(
'screen_callback' => array( $e, 'settings_screen' ),
'screen_save_callback' => array( $e, 'settings_screen_save' ),
);
$expected = array(
'create' => $fallback,
'edit' => array(
'screen_callback' => array( $e, 'edit_screen' ),
'screen_save_callback' => array( $e, 'edit_screen_save' ),
),
'admin' => $fallback,
);
// strip everything from the screens array but what we we're
// testing
foreach ( $screens as &$screen ) {
foreach ( $screen as $k => $v ) {
if ( ! in_array( $k, array( 'screen_callback', 'screen_save_callback' ) ) ) {
unset( $screen[ $k ] );
}
}
}
$this->assertEquals( $screens, $expected );
}
public function test_parse_args_r() {
$a = array(
'veggies' => 'yes',
'ice_cream' => 'dope',
'fruit' => array(
'apple' => 'gross',
'berries' => array(
'blueberries' => array(
'in_season' => 'never',
'oh' => 'boy',
),
'cherries' => 'sometimes',
),
),
);
$b = array(
'veggies' => 'no',
'cheese' => array(
'cheddar' => 'good',
),
'fruit' => array(
'apple' => 'yum',
'berries' => array(
'strawberries' => 'awesome',
'blueberries' => array(
'in_season' => 'yes',
'out_of_season' => 'no',
),
),
),
);
$expected = array(
'veggies' => 'yes',
'ice_cream' => 'dope',
'cheese' => array(
'cheddar' => 'good',
),
'fruit' => array(
'apple' => 'gross',
'berries' => array(
'strawberries' => 'awesome',
'blueberries' => array(
'in_season' => 'never',
'out_of_season' => 'no',
'oh' => 'boy',
),
'cherries' => 'sometimes',
),
),
);
$this->assertEquals( $expected, BP_Group_Extension::parse_args_r( $a, $b ) );
}
/**
* Config that gets intentionally stored as a direct property of object
*/
public function test_access_root_property() {
$class_name = 'BPTest_Group_Extension_Access_Root_Property';
$e = new $class_name();
$e->_register();
$this->assertEquals( 39, $e->nav_item_position );
}
/**
* Config that gets registered using init(), but is then accessed via
* the legacy location
*/
public function test_access_init_property_using_legacy_location() {
$class_name = 'BPTest_Group_Extension_Access_Init_Property_Using_Legacy_Location';
$e = new $class_name();
$e->_register();
$this->assertEquals( 18, $e->create_step_position );
}
/**
* Provides settings_screen* and edit_screen*
*/
public function test_get_screen_callback_fallbacks() {
$class_name = 'BPTest_Group_Extension_Get_Screen_Callback_Fallbacks';
$e = new $class_name();
$e->_register();
$this->assertEquals( array( $e, 'settings_screen' ), $e->screens['create']['screen_callback'] );
$this->assertEquals( array( $e, 'settings_screen_save' ), $e->screens['create']['screen_save_callback'] );
$this->assertEquals( array( $e, 'settings_screen' ), $e->screens['admin']['screen_callback'] );
$this->assertEquals( array( $e, 'settings_screen_save' ), $e->screens['admin']['screen_save_callback'] );
$this->assertEquals( array( $e, 'edit_screen' ), $e->screens['edit']['screen_callback'] );
$this->assertEquals( array( $e, 'edit_screen_save' ), $e->screens['edit']['screen_save_callback'] );
}
public function test_has_submit_button() {
$a = '<p>Foo bar</p><input type="text" name="awesome" /><input name="save" type="submit" id="saverrrr" />sweet';
$this->assertTrue( BP_Group_Extension::has_submit_button( $a ) );
$b = '<p>Foo bar</p><input type="text" name="awesome" />sweet';
$this->assertFalse( BP_Group_Extension::has_submit_button( $b ) );
// switch the quotation marks
$c = "<p>Foo bar</p><input type='text' name='awesome' /><input name='save' type='submit' id='saverrrr' />sweet";
$this->assertTrue( BP_Group_Extension::has_submit_button( $c ) );
}
/**
* @group enable_nav_item
* @expectedIncorrectUsage bp_nav
*/
public function test_enable_nav_item_true() {
$old_options_nav = buddypress()->bp_options_nav;
$g = self::factory()->group->create();
$g_obj = groups_get_group( $g );
$class_name = 'BPTest_Group_Extension_Enable_Nav_Item_True';
$e = new $class_name();
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e->_register();
$this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
// Clean up
buddypress()->bp_options_nav = $old_options_nav;
}
/**
* @group enable_nav_item
* @expectedIncorrectUsage bp_nav
*/
public function test_enable_nav_item_false() {
$old_options_nav = buddypress()->bp_options_nav;
$g = self::factory()->group->create();
$g_obj = groups_get_group( $g );
$class_name = 'BPTest_Group_Extension_Enable_Nav_Item_False';
$e = new $class_name();
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e->_register();
$this->assertFalse( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
// Clean up
buddypress()->bp_options_nav = $old_options_nav;
}
/**
* @group visibility
* @expectedIncorrectUsage bp_nav
*/
public function test_visibility_private() {
$old_options_nav = buddypress()->bp_options_nav;
$old_current_user = get_current_user_id();
$g = self::factory()->group->create( array(
'status' => 'private',
) );
$g_obj = groups_get_group( $g );
$class_name = 'BPTest_Group_Extension_Visibility_Private';
$e = new $class_name();
// Test as non-logged-in user
$this->set_current_user( 0 );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e->_register();
$this->assertFalse( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
// Clean up
buddypress()->bp_options_nav = $old_options_nav;
// Test as group member
$u = self::factory()->user->create();
$this->set_current_user( $u );
$this->add_user_to_group( $u, $g );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e->_register();
$this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
// Clean up
buddypress()->bp_options_nav = $old_options_nav;
$this->set_current_user( $old_current_user );
}
/**
* @group visibility
* @expectedIncorrectUsage bp_nav
*
* visibility=public + status=private results in adding the item to
* the nav. However, BP_Groups_Component::setup_globals() bounces the
* user away from this page on a regular pageload (BP 2.0 and under)
*
* @see https://buddypress.trac.wordpress.org/ticket/4785
*/
public function test_visibility_public() {
$old_options_nav = buddypress()->bp_options_nav;
$old_current_user = get_current_user_id();
$g = self::factory()->group->create( array(
'status' => 'private',
) );
$g_obj = groups_get_group( $g );
$class_name = 'BPTest_Group_Extension_Visibility_Public';
$e = new $class_name();
// Test as non-logged-in user
$this->set_current_user( 0 );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e->_register();
$this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
// Clean up
buddypress()->bp_options_nav = $old_options_nav;
// Test as group member
$u = self::factory()->user->create();
$this->set_current_user( $u );
$this->add_user_to_group( $u, $g );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e->_register();
$this->assertTrue( isset( buddypress()->bp_options_nav[ $g_obj->slug ][ $e->slug ] ) );
// Clean up
buddypress()->bp_options_nav = $old_options_nav;
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_visit
*/
public function test_user_can_visit_inferred_from_enable_nav_item() {
$old_current_user = get_current_user_id();
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$this->set_current_user( 0 );
$e = new BPTest_Group_Extension_Inferred_Access_Settings_EnableNavItem_True();
$e->_register();
$this->assertTrue( $e->user_can_visit() );
$e2 = new BPTest_Group_Extension_Inferred_Access_Settings_EnableNavItem_False();
$e2->_register();
$this->assertFalse( $e2->user_can_visit() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_visit
*/
public function test_user_can_visit_explicit_for_logged_out_user() {
$old_current_user = get_current_user_id();
$this->set_current_user( 0 );
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_Access_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_visit() );
$e2 = new BPTest_Group_Extension_Access_Loggedin();
$e2->_register();
$this->assertFalse( $e2->user_can_visit() );
$e3 = new BPTest_Group_Extension_Access_Member();
$e3->_register();
$this->assertFalse( $e3->user_can_visit() );
$e4 = new BPTest_Group_Extension_Access_AdminMod();
$e4->_register();
$this->assertFalse( $e4->user_can_visit() );
$e5 = new BPTest_Group_Extension_Access_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_visit() );
$e6 = new BPTest_Group_Extension_Access_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_visit() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_visit
*/
public function test_user_can_visit_explicit_for_logged_in_user() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_Access_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_visit() );
$e2 = new BPTest_Group_Extension_Access_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_visit() );
$e3 = new BPTest_Group_Extension_Access_Member();
$e3->_register();
$this->assertFalse( $e3->user_can_visit() );
$e4 = new BPTest_Group_Extension_Access_AdminMod();
$e4->_register();
$this->assertFalse( $e4->user_can_visit() );
$e5 = new BPTest_Group_Extension_Access_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_visit() );
$e6 = new BPTest_Group_Extension_Access_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_visit() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_visit
*/
public function test_user_can_visit_explicit_for_group_member() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$this->add_user_to_group( $u, $g );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_Access_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_visit() );
$e2 = new BPTest_Group_Extension_Access_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_visit() );
$e3 = new BPTest_Group_Extension_Access_Member();
$e3->_register();
$this->assertTrue( $e3->user_can_visit() );
$e4 = new BPTest_Group_Extension_Access_AdminMod();
$e4->_register();
$this->assertFalse( $e4->user_can_visit() );
$e5 = new BPTest_Group_Extension_Access_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_visit() );
$e6 = new BPTest_Group_Extension_Access_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_visit() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_visit
*/
public function test_user_can_visit_explicit_for_group_mod() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$m = $this->add_user_to_group( $u, $g );
$gm = new BP_Groups_Member( $u, $g );
$gm->promote( 'mod' );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_Access_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_visit() );
$e2 = new BPTest_Group_Extension_Access_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_visit() );
$e3 = new BPTest_Group_Extension_Access_Member();
$e3->_register();
$this->assertTrue( $e3->user_can_visit() );
$e4 = new BPTest_Group_Extension_Access_AdminMod();
$e4->_register();
$this->assertTrue( $e4->user_can_visit() );
$e5 = new BPTest_Group_Extension_Access_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_visit() );
$e6 = new BPTest_Group_Extension_Access_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_visit() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_visit
*/
public function test_user_can_visit_explicit_for_group_admin() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$m = $this->add_user_to_group( $u, $g );
$gm = new BP_Groups_Member( $u, $g );
$gm->promote( 'admin' );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_Access_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_visit() );
$e2 = new BPTest_Group_Extension_Access_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_visit() );
$e3 = new BPTest_Group_Extension_Access_Member();
$e3->_register();
$this->assertTrue( $e3->user_can_visit() );
$e4 = new BPTest_Group_Extension_Access_AdminMod();
$e4->_register();
$this->assertTrue( $e4->user_can_visit() );
$e5 = new BPTest_Group_Extension_Access_Admin();
$e5->_register();
$this->assertTrue( $e5->user_can_visit() );
$e6 = new BPTest_Group_Extension_Access_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_visit() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_see_nav_item
*/
public function test_user_can_see_nav_item_implied() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$old_current_user = get_current_user_id();
$this->set_current_user( 0 );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_Access_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_see_nav_item() );
$e2 = new BPTest_Group_Extension_Access_Loggedin();
$e2->_register();
$this->assertFalse( $e2->user_can_see_nav_item() );
$e3 = new BPTest_Group_Extension_Access_Member();
$e3->_register();
$this->assertFalse( $e3->user_can_see_nav_item() );
$e4 = new BPTest_Group_Extension_Access_AdminMod();
$e4->_register();
$this->assertFalse( $e4->user_can_see_nav_item() );
$e5 = new BPTest_Group_Extension_Access_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_see_nav_item() );
$e6 = new BPTest_Group_Extension_Access_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_visit() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_see_nav_item
*/
public function test_user_can_see_nav_item_explicit_for_logged_out_user() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$old_current_user = get_current_user_id();
$this->set_current_user( 0 );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_ShowTab_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_see_nav_item() );
$e2 = new BPTest_Group_Extension_ShowTab_Loggedin();
$e2->_register();
$this->assertFalse( $e2->user_can_see_nav_item() );
$e3 = new BPTest_Group_Extension_ShowTab_Member();
$e3->_register();
$this->assertFalse( $e3->user_can_see_nav_item() );
$e4 = new BPTest_Group_Extension_ShowTab_AdminMod();
$e4->_register();
$this->assertFalse( $e4->user_can_see_nav_item() );
$e5 = new BPTest_Group_Extension_ShowTab_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_see_nav_item() );
$e6 = new BPTest_Group_Extension_ShowTab_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_see_nav_item() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_see_nav_item
*/
public function test_user_can_see_nav_item_explicit_for_logged_in_user() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_ShowTab_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_see_nav_item() );
$e2 = new BPTest_Group_Extension_ShowTab_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_see_nav_item() );
$e3 = new BPTest_Group_Extension_ShowTab_Member();
$e3->_register();
$this->assertFalse( $e3->user_can_see_nav_item() );
$e4 = new BPTest_Group_Extension_ShowTab_AdminMod();
$e4->_register();
$this->assertFalse( $e4->user_can_see_nav_item() );
$e5 = new BPTest_Group_Extension_ShowTab_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_see_nav_item() );
$e6 = new BPTest_Group_Extension_ShowTab_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_see_nav_item() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_see_nav_item
*/
public function test_user_can_see_nav_item_explicit_for_group_member() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$this->add_user_to_group( $u, $g );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_ShowTab_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_see_nav_item() );
$e2 = new BPTest_Group_Extension_ShowTab_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_see_nav_item() );
$e3 = new BPTest_Group_Extension_ShowTab_Member();
$e3->_register();
$this->assertTrue( $e3->user_can_see_nav_item() );
$e4 = new BPTest_Group_Extension_ShowTab_AdminMod();
$e4->_register();
$this->assertFalse( $e4->user_can_see_nav_item() );
$e5 = new BPTest_Group_Extension_ShowTab_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_see_nav_item() );
$e6 = new BPTest_Group_Extension_ShowTab_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_see_nav_item() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_see_nav_item
*/
public function test_user_can_see_nav_item_explicit_for_group_mod() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$this->add_user_to_group( $u, $g );
$gm = new BP_Groups_Member( $u, $g );
$gm->promote( 'mod' );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_ShowTab_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_see_nav_item() );
$e2 = new BPTest_Group_Extension_ShowTab_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_see_nav_item() );
$e3 = new BPTest_Group_Extension_ShowTab_Member();
$e3->_register();
$this->assertTrue( $e3->user_can_see_nav_item() );
$e4 = new BPTest_Group_Extension_ShowTab_AdminMod();
$e4->_register();
$this->assertTrue( $e4->user_can_see_nav_item() );
$e5 = new BPTest_Group_Extension_ShowTab_Admin();
$e5->_register();
$this->assertFalse( $e5->user_can_see_nav_item() );
$e6 = new BPTest_Group_Extension_ShowTab_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_see_nav_item() );
$this->set_current_user( $old_current_user );
}
/**
* @group user_can_see_nav_item
*/
public function test_user_can_see_nav_item_explicit_for_group_admin() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$u = self::factory()->user->create();
$old_current_user = get_current_user_id();
$this->set_current_user( $u );
$this->add_user_to_group( $u, $g );
$gm = new BP_Groups_Member( $u, $g );
$gm->promote( 'admin' );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_ShowTab_Anyone();
$e1->_register();
$this->assertTrue( $e1->user_can_see_nav_item() );
$e2 = new BPTest_Group_Extension_ShowTab_Loggedin();
$e2->_register();
$this->assertTrue( $e2->user_can_see_nav_item() );
$e3 = new BPTest_Group_Extension_ShowTab_Member();
$e3->_register();
$this->assertTrue( $e3->user_can_see_nav_item() );
$e4 = new BPTest_Group_Extension_ShowTab_AdminMod();
$e4->_register();
$this->assertTrue( $e4->user_can_see_nav_item() );
$e5 = new BPTest_Group_Extension_ShowTab_Admin();
$e5->_register();
$this->assertTrue( $e5->user_can_see_nav_item() );
$e6 = new BPTest_Group_Extension_ShowTab_Noone();
$e6->_register();
$this->assertFalse( $e6->user_can_see_nav_item() );
$this->set_current_user( $old_current_user );
}
/**
* @ticket BP7131
*/
public function test_widget_on_group_home_page() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$this->go_to( bp_get_group_permalink( $g_obj ) );
$e1 = new BPTest_Group_Extension_Widget_Method();
$e1->_register();
ob_start();
bp_custom_group_boxes();
$content = ob_get_clean();
$this->assertTrue( $content === 'Widget Displayed' );
}
/**
* @ticket BP7131
*/
public function test_widget_on_group_members_page() {
$g = self::factory()->group->create( array(
'status' => 'public',
) );
$g_obj = groups_get_group( $g );
$this->go_to( trailingslashit( bp_get_group_permalink( $g_obj ) ) . 'members/' );
$e1 = new BPTest_Group_Extension_Widget_Method();
$e1->_register();
ob_start();
bp_custom_group_boxes();
$content = ob_get_clean();
$this->assertFalse( $content === 'Widget Displayed' );
}
}