Make WordPress Core

Ticket #44094: 44094.3.diff

File 44094.3.diff, 2.0 KB (added by donmhico, 5 years ago)

Added unit test.

  • src/wp-includes/class-wp-user.php

    diff --git src/wp-includes/class-wp-user.php src/wp-includes/class-wp-user.php
    index 73f7cdf0d5..4f9fda585d 100644
    class WP_User { 
    166166         * @param int    $site_id Optional. The site ID to initialize for.
    167167         */
    168168        public function init( $data, $site_id = '' ) {
    169                 $this->data = $data;
     169                /**
     170                 * Filters the user data.
     171                 *
     172                 * @since 5.3
     173                 *
     174                 * @link https://core.trac.wordpress.org/ticket/44094
     175                 *
     176                 * @param  object  $data    User DB row object.
     177                 * @param  integer $site_id Optional. The site ID.
     178                 */
     179                $this->data = apply_filters( 'init_user_data', $data, $site_id );
    170180                $this->ID   = (int) $data->ID;
    171181
    172182                $this->for_site( $site_id );
  • tests/phpunit/tests/user.php

    diff --git tests/phpunit/tests/user.php tests/phpunit/tests/user.php
    index 13824009b6..fa68752539 100644
    class Tests_User extends WP_UnitTestCase { 
    16311631                // Number of exported user properties.
    16321632                $this->assertSame( 11, count( $actual['data'][0]['data'] ) );
    16331633        }
     1634
     1635        /**
     1636         * Test for the `init_user_data` filter.
     1637         *
     1638         * @ticket 44094
     1639         */
     1640        function test_init_user_data_filter() {
     1641                $user_id = self::factory()->user->create(
     1642                        array(
     1643                                'role'       => 'subscriber',
     1644                                'user_login' => 'test_user_login',
     1645                                'user_email' => 'test-email@test.dev',
     1646                                'user_nicename' => 'test_user_nicename'
     1647                        )
     1648                );
     1649
     1650                add_filter( 'init_user_data', function( $data, $site_id ) use ( $user_id ) {
     1651                        // Alter the `$data` of the created user above.
     1652                        if ( $user_id == $data->ID ) {
     1653                                $data->user_login = 'altered_user_login';
     1654                                $data->user_email = 'altered-email@test.com';
     1655                                $data->user_nicename = 'altered_user_nicename';
     1656                        }
     1657
     1658                        return $data;
     1659
     1660                }, 10, 2 );
     1661
     1662                $user = get_user_by( 'ID', $user_id );
     1663
     1664                $this->assertSame( $user->user_login, 'altered_user_login' );
     1665                $this->assertSame( $user->user_email, 'altered-email@test.com' );
     1666                $this->assertSame( $user->user_nicename, 'altered_user_nicename' );
     1667        }
     1668
    16341669}