members->types = array(); $this->permalink_structure = get_option( 'permalink_structure', '' ); wp_set_current_user( self::factory()->user->create( array( 'user_login' => 'paulgibbs', 'role' => 'subscriber' ) ) ); $this->set_permalink_structure( '/%postname%/' ); } public function tear_down() { $this->set_permalink_structure( $this->permalink_structure ); parent::tear_down(); } public function test_members_directory() { $this->go_to( bp_get_members_directory_permalink() ); $pages = bp_core_get_directory_pages(); $component_id = bp_current_component(); $this->assertSame( bp_get_members_root_slug(), $pages->{$component_id}->slug ); } /** * @ticket BP9330 * @dataProvider members_homepage_urls */ public function test_members_directory_as_homepage( $query_string ) { $this->set_permalink_structure( '/%postname%/' ); $pages = bp_core_get_directory_pages(); $show_on_front = get_option( 'show_on_front' ); $page_on_front = get_option( 'page_on_front' ); $members_page_id = (int) $pages->members->id; update_option( 'show_on_front', 'page' ); update_option( 'page_on_front', $members_page_id ); try { $this->go_to( home_url( '/' ) . $query_string ); $this->assertTrue( bp_is_members_directory(), 'The homepage should load the Members directory.' ); $this->assertFalse( is_404() ); $this->assertSame( $members_page_id, get_queried_object_id() ); } finally { update_option( 'show_on_front', $show_on_front ); update_option( 'page_on_front', $page_on_front ); } } public static function members_homepage_urls() { return array( 'without query string' => array( '' ), 'with query string' => array( '?anything=value' ), 'with tracking parameters' => array( '?utm_source=newsletter&ref=test' ), 'with encoded parameter' => array( '?anything=hello%20world' ), ); } public function test_member_permalink() { $this->go_to( bp_members_get_user_url( bp_loggedin_user_id() ) ); $this->assertTrue( bp_is_my_profile() ); } /** * @ticket BP6286 * @group member_types */ public function test_member_directory_with_member_type() { bp_register_member_type( 'foo' ); $url = bp_get_member_type_directory_permalink( 'foo' ); $this->go_to( $url ); $this->assertTrue( bp_is_members_component() ); } /** * @ticket BP6286 * @group member_types */ public function test_member_directory_with_member_type_should_obey_filtered_type_slug() { bp_register_member_type( 'foo' ); add_filter( 'bp_members_member_type_base', array( $this, 'filter_member_type_base' ) ); $url = bp_get_member_type_directory_permalink( 'foo' ); remove_filter( 'bp_members_member_type_base', array( $this, 'filter_member_type_base' ) ); $this->assertSame( $url, 'http://' . trailingslashit( WP_TESTS_DOMAIN ) . 'members/bp-member-type/foo/' ); } public function filter_member_type_base( $base ) { return 'bp-member-type'; } /** * @ticket BP6286 * @group member_types */ public function test_member_directory_with_member_type_that_has_custom_directory_slug() { bp_register_member_type( 'foo', array( 'has_directory' => 'foos' ) ); $this->go_to( bp_get_members_directory_permalink() . 'type/foos/' ); $this->assertTrue( bp_is_members_component() ); } /** * @ticket BP6286 * @group member_types */ public function test_member_directory_should_404_for_member_types_that_have_no_directory() { bp_register_member_type( 'foo', array( 'has_directory' => false ) ); $this->go_to( bp_get_members_directory_permalink() . 'type/foo/' ); $this->assertTrue( is_404() ); } /** * @ticket BP6325 */ public function test_members_shortlink_redirector() { $shortlink_member_slug = 'me'; $this->go_to( bp_get_members_directory_permalink() . $shortlink_member_slug ); $this->assertSame( get_current_user_id(), bp_displayed_user_id() ); } public function filter_root_slug( $root_slug ) { return 'community/' . $root_slug; } /** * @ticket BP9063 */ public function test_members_registration_page_filtered() { add_filter( 'bp_members_register_root_slug', array( $this, 'filter_root_slug' ) ); bp_delete_rewrite_rules(); // Regenerate rewrite rules. $this->go_to( home_url() ); $bp_registration_url = bp_get_signup_page(); remove_filter( 'bp_members_register_root_slug', array( $this, 'filter_root_slug' ) ); $this->go_to( $bp_registration_url ); $this->assertStringContainsString( 'community', $bp_registration_url ); $this->assertTrue( bp_is_register_page() ); } /** * @ticket BP9063 */ public function test_members_registration_page() { $bp_registration_url = bp_get_signup_page(); $this->go_to( $bp_registration_url ); $this->assertStringNotContainsString( 'community', $bp_registration_url ); $this->assertTrue( bp_is_register_page() ); } /** * @ticket BP9063 */ public function test_members_activation_page_filtered() { add_filter( 'bp_members_activate_root_slug', array( $this, 'filter_root_slug' ) ); bp_delete_rewrite_rules(); // Regenerate rewrite rules. $this->go_to( home_url() ); $bp_activation_url = bp_get_activation_page(); remove_filter( 'bp_members_activate_root_slug', array( $this, 'filter_root_slug' ) ); $this->go_to( $bp_activation_url ); $this->assertStringContainsString( 'community', $bp_activation_url ); $this->assertTrue( bp_is_activation_page() ); } /** * @ticket BP9063 */ public function test_members_activation_page() { $bp_activation_url = bp_get_activation_page(); $this->go_to( $bp_activation_url ); $this->assertStringNotContainsString( 'community', $bp_activation_url ); $this->assertTrue( bp_is_activation_page() ); } }