1
0
Fork 0
mirror of https://github.com/buddypress/buddypress.git synced 2026-07-23 21:06:56 +08:00
buddypress/tests/phpunit/testcases/routing/members.php
Mathieu Viet 122a4b6e79 Stop using BP Legacy URL parser in favor of the new BP Rewrites API
- Deprecate `bp_core_set_uri_globals()`. This function is moved inside the BP Classic compatibility plugin.
- Introduce the new `bp_register_nav` action to hook to when globalizing Members single item navigations from the `BP_Component` class.
- Improve `bp_get_component_navigations()` so that Avatar/Cover images navigation items are moved inside the Profile sub nav if the Extended profile component is active.
- Register Avatar/Cover images Ajax actions so that these actions trigger our new URL Parser inside Ajax context.
- Improve the `BP_Core_Nav::add_nav()` method so that any BP action variable slugs can be customized.
- Improve Members & Groups component canonical redirections.
- Handle slugs customization persistency using directory pages post metas.
- Introduce a new repair tool to reset all slugs to BuddyPress default one.
- Adapt some PHPUnit tests to better handle our new URL parser.

Props Props r-a-y, johnjamesjacoby, boonebgorges

Closes https://github.com/buddypress/buddypress/pull/94
See #4954



git-svn-id: https://buddypress.svn.wordpress.org/trunk@13468 cdf35c40-ae34-48e0-9cc9-0c9da1808c22
2023-05-03 06:18:23 +00:00

123 lines
3.7 KiB
PHP

<?php
/**
* @group members
* @group routing
*/
class BP_Tests_Routing_Members extends BP_UnitTestCase {
protected $old_current_user = 0;
protected $permalink_structure = '';
public function set_up() {
parent::set_up();
buddypress()->members->types = array();
$this->old_current_user = get_current_user_id();
$this->permalink_structure = get_option( 'permalink_structure', '' );
$this->set_current_user( self::factory()->user->create( array( 'user_login' => 'paulgibbs', 'role' => 'subscriber' ) ) );
}
public function tear_down() {
$this->set_current_user( $this->old_current_user );
$this->set_permalink_structure( $this->permalink_structure );
parent::tear_down();
}
function test_members_directory() {
$this->set_permalink_structure( '/%postname%/' );
$this->go_to( bp_get_members_directory_permalink() );
$pages = bp_core_get_directory_pages();
$component_id = bp_current_component();
$this->assertEquals( bp_get_members_root_slug(), $pages->{$component_id}->slug );
}
function test_member_permalink() {
$this->set_permalink_structure( '/%postname%/' );
$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() {
$this->set_permalink_structure( '/%postname%/' );
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() {
$this->set_permalink_structure( '/%postname%/' );
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://example.org/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() {
$this->set_permalink_structure( '/%postname%/' );
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_with_member_type_should_be_overridden_by_member_with_same_nicename() {
$this->set_permalink_structure( '/%postname%/' );
$u = self::factory()->user->create( array( 'user_nicename' => 'foo' ) );
bp_register_member_type( 'foo' );
$this->go_to( bp_get_members_directory_permalink() . 'type/foo/' );
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @ticket BP6286
* @group member_types
*/
public function test_member_directory_should_404_for_member_types_that_have_no_directory() {
$this->set_permalink_structure( '/%postname%/' );
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
*/
function test_members_shortlink_redirector() {
$this->set_permalink_structure( '/%postname%/' );
$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() );
}
}