mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
This replaces all non-static calls to the `WP_UnitTestCase_Base::factory()` method with static function calls, since the method is declared as static. This is a consistency improvement for the test suite. Follow up to [35225], [35242], [49603], [54087]. Props jrf. See #55652. git-svn-id: https://develop.svn.wordpress.org/trunk@54088 602fd350-edb4-49c9-b593-d223f7449a82
135 lines
3.3 KiB
PHP
135 lines
3.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group l10n
|
|
* @group i18n
|
|
*
|
|
* @covers ::get_user_locale
|
|
*/
|
|
class Tests_L10n_GetUserLocale extends WP_UnitTestCase {
|
|
protected $user_id;
|
|
|
|
public function set_up() {
|
|
parent::set_up();
|
|
|
|
$this->user_id = self::factory()->user->create(
|
|
array(
|
|
'role' => 'administrator',
|
|
'locale' => 'de_DE',
|
|
)
|
|
);
|
|
|
|
wp_set_current_user( $this->user_id );
|
|
}
|
|
|
|
public function test_user_locale_property() {
|
|
set_current_screen( 'dashboard' );
|
|
$this->assertSame( 'de_DE', get_user_locale() );
|
|
$this->assertSame( get_user_by( 'id', $this->user_id )->locale, get_user_locale() );
|
|
}
|
|
|
|
public function test_update_user_locale() {
|
|
set_current_screen( 'dashboard' );
|
|
update_user_meta( $this->user_id, 'locale', 'fr_FR' );
|
|
$this->assertSame( 'fr_FR', get_user_locale() );
|
|
}
|
|
|
|
public function test_returns_site_locale_if_empty() {
|
|
set_current_screen( 'dashboard' );
|
|
update_user_meta( $this->user_id, 'locale', '' );
|
|
$this->assertSame( get_locale(), get_user_locale() );
|
|
}
|
|
|
|
public function test_returns_site_locale_if_no_user() {
|
|
wp_set_current_user( 0 );
|
|
$this->assertSame( get_locale(), get_user_locale() );
|
|
}
|
|
|
|
public function test_returns_correct_user_locale() {
|
|
set_current_screen( 'dashboard' );
|
|
$this->assertSame( 'de_DE', get_user_locale() );
|
|
}
|
|
|
|
public function test_returns_correct_user_locale_on_frontend() {
|
|
$this->assertSame( 'de_DE', get_user_locale() );
|
|
}
|
|
|
|
public function test_site_locale_is_not_affected() {
|
|
set_current_screen( 'dashboard' );
|
|
$this->assertSame( 'en_US', get_locale() );
|
|
}
|
|
|
|
public function test_site_locale_is_not_affected_on_frontend() {
|
|
$this->assertSame( 'en_US', get_locale() );
|
|
}
|
|
|
|
/**
|
|
* @group ms-required
|
|
*/
|
|
public function test_user_locale_is_same_across_network() {
|
|
if ( ! is_multisite() ) {
|
|
$this->markTestSkipped( 'This test requires Multisite.' );
|
|
}
|
|
|
|
$user_locale = get_user_locale();
|
|
|
|
switch_to_blog( self::factory()->blog->create() );
|
|
$user_locale_2 = get_user_locale();
|
|
restore_current_blog();
|
|
|
|
$this->assertSame( 'de_DE', $user_locale );
|
|
$this->assertSame( $user_locale, $user_locale_2 );
|
|
}
|
|
|
|
public function test_user_id_argument_with_id() {
|
|
$user_id = self::factory()->user->create(
|
|
array(
|
|
'locale' => 'es_ES',
|
|
)
|
|
);
|
|
|
|
$user_locale1 = get_user_locale( $user_id );
|
|
|
|
delete_user_meta( $user_id, 'locale' );
|
|
|
|
$user_locale2 = get_user_locale( $user_id );
|
|
|
|
$this->assertSame( 'es_ES', $user_locale1 );
|
|
$this->assertSame( get_locale(), $user_locale2 );
|
|
}
|
|
|
|
public function test_user_id_argument_with_wp_user_object() {
|
|
$user_id = self::factory()->user->create(
|
|
array(
|
|
'locale' => 'es_ES',
|
|
)
|
|
);
|
|
|
|
$user = get_user_by( 'id', $user_id );
|
|
|
|
$user_locale1 = get_user_locale( $user );
|
|
|
|
delete_user_meta( $user_id, 'locale' );
|
|
|
|
$user_locale2 = get_user_locale( $user );
|
|
|
|
$this->assertSame( 'es_ES', $user_locale1 );
|
|
$this->assertSame( get_locale(), $user_locale2 );
|
|
}
|
|
|
|
public function test_user_id_argument_with_nonexistent_user() {
|
|
global $wpdb;
|
|
|
|
$user_id = $wpdb->get_var( "SELECT MAX(ID) FROM $wpdb->users" ) + 1;
|
|
|
|
$user_locale = get_user_locale( $user_id );
|
|
|
|
$this->assertSame( get_locale(), $user_locale );
|
|
}
|
|
|
|
public function test_user_id_argument_with_invalid_type() {
|
|
$user_locale = get_user_locale( 'string' );
|
|
$this->assertSame( get_locale(), $user_locale );
|
|
}
|
|
}
|