Make WordPress Core


Ignore:
Timestamp:
10/04/2016 02:26:26 AM (8 years ago)
Author:
boonebgorges
Message:

Query: Add nicename and login params to user query.

New parameters are: login, login__in, login__not_in, nicename,
nicename__in, nicename__not_in.

login__in and nicename__in are also now valid values for the
'orderby' parameter.

Props ryanplas.
Fixes #36624.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/user/query.php

    r38398 r38715  
    879879
    880880    /**
     881     * @ticket 36624
     882     */
     883    public function test_nicename_returns_user_with_nicename() {
     884        wp_update_user( array(
     885            'ID' => self::$author_ids[0],
     886            'user_nicename' => 'peter'
     887        ) );
     888
     889        $q = new WP_User_Query( array (
     890            'nicename' => 'peter'
     891        ) );
     892
     893        $found = wp_list_pluck( $q->get_results(), 'ID' );
     894        $expected = array( self::$author_ids[0] );
     895
     896        $this->assertContains( "AND user_nicename = 'peter'", $q->query_where);
     897        $this->assertEqualSets( $expected, $found);
     898    }
     899
     900    /**
     901     * @ticket 36624
     902     */
     903    public function test_nicename__in_returns_users_with_included_nicenames() {
     904        wp_update_user( array(
     905            'ID' => self::$author_ids[0],
     906            'user_nicename' => 'peter'
     907        ) );
     908
     909        wp_update_user( array(
     910            'ID' => self::$author_ids[1],
     911            'user_nicename' => 'paul'
     912        ) );
     913
     914        wp_update_user( array(
     915            'ID' => self::$author_ids[2],
     916            'user_nicename' => 'mary'
     917        ) );
     918
     919        $q = new WP_User_Query( array (
     920            'nicename__in' => array( 'peter', 'paul', 'mary' )
     921        ) );
     922
     923        $found = wp_list_pluck( $q->get_results(), 'ID' );
     924        $expected = array( self::$author_ids[0], self::$author_ids[1], self::$author_ids[2] );
     925
     926        $this->assertContains( "AND user_nicename IN ( 'peter','paul','mary' )", $q->query_where);
     927        $this->assertEqualSets( $expected, $found );
     928    }
     929
     930    /**
     931     * @ticket 36624
     932     */
     933    public function test_nicename__not_in_returns_users_without_included_nicenames() {
     934        wp_update_user( array(
     935            'ID' => self::$author_ids[0],
     936            'user_nicename' => 'peter'
     937        ) );
     938
     939        wp_update_user( array(
     940            'ID' => self::$author_ids[1],
     941            'user_nicename' => 'paul'
     942        ) );
     943
     944        wp_update_user( array(
     945            'ID' => self::$author_ids[2],
     946            'user_nicename' => 'mary'
     947        ) );
     948
     949        $q = new WP_User_Query( array (
     950            'nicename__not_in' => array( 'peter', 'paul', 'mary' )
     951        ) );
     952
     953        $foundCount = count($q->get_results());
     954        $expectedCount = 10; // 13 total users minus 3 from query
     955
     956        $this->assertContains( "AND user_nicename NOT IN ( 'peter','paul','mary' )", $q->query_where);
     957        $this->assertEquals( $expectedCount, $foundCount );
     958    }
     959
     960    /**
     961     * @ticket 36624
     962     */
     963    public function test_orderby_nicename__in() {
     964        wp_update_user( array(
     965            'ID' => self::$author_ids[0],
     966            'user_nicename' => 'peter'
     967        ) );
     968
     969        wp_update_user( array(
     970            'ID' => self::$author_ids[1],
     971            'user_nicename' => 'paul'
     972        ) );
     973
     974        wp_update_user( array(
     975            'ID' => self::$author_ids[2],
     976            'user_nicename' => 'mary'
     977        ) );
     978
     979        $q = new WP_User_Query( array (
     980            'nicename__in' => array( 'mary', 'peter', 'paul' ),
     981            'orderby' => 'nicename__in'
     982        ) );
     983
     984        $found = wp_list_pluck( $q->get_results(), 'ID' );
     985        $expected = array( self::$author_ids[2], self::$author_ids[0], self::$author_ids[1] );
     986
     987        $this->assertContains( "FIELD( user_nicename, 'mary','peter','paul' )", $q->query_orderby);
     988        $this->assertSame( $expected, $found );
     989    }
     990
     991    /**
     992     * @ticket 36624
     993     */
     994    public function test_login_returns_user_with_login() {
     995
     996        $user_login = get_userdata( self::$author_ids[0] )->user_login;
     997
     998        $q = new WP_User_Query( array (
     999            'login' => $user_login
     1000        ) );
     1001
     1002        $found = wp_list_pluck( $q->get_results(), 'ID' );
     1003        $expected = array( self::$author_ids[0] );
     1004
     1005        $this->assertContains( "AND user_login = '$user_login'", $q->query_where);
     1006        $this->assertEqualSets( $expected, $found);
     1007    }
     1008
     1009    /**
     1010     * @ticket 36624
     1011     */
     1012    public function test_login__in_returns_users_with_included_logins() {
     1013        $user_login1 = get_userdata( self::$author_ids[0] )->user_login;
     1014        $user_login2 = get_userdata( self::$author_ids[1] )->user_login;
     1015        $user_login3 = get_userdata( self::$author_ids[2] )->user_login;
     1016
     1017        $q = new WP_User_Query( array (
     1018            'login__in' => array( $user_login1, $user_login2, $user_login3 )
     1019        ) );
     1020
     1021        $found = wp_list_pluck( $q->get_results(), 'ID' );
     1022        $expected = array( self::$author_ids[0], self::$author_ids[1], self::$author_ids[2] );
     1023
     1024        $this->assertContains( "AND user_login IN ( '$user_login1','$user_login2','$user_login3' )", $q->query_where);
     1025        $this->assertEqualSets( $expected, $found );
     1026    }
     1027
     1028    /**
     1029     * @ticket 36624
     1030     */
     1031    public function test_login__not_in_returns_users_without_included_logins() {
     1032        $user_login1 = get_userdata( self::$author_ids[0] )->user_login;
     1033        $user_login2 = get_userdata( self::$author_ids[1] )->user_login;
     1034        $user_login3 = get_userdata( self::$author_ids[2] )->user_login;
     1035
     1036        $q = new WP_User_Query( array (
     1037            'login__not_in' => array( $user_login1, $user_login2, $user_login3 )
     1038        ) );
     1039
     1040        $foundCount = count($q->get_results());
     1041        $expectedCount = 10; // 13 total users minus 3 from query
     1042
     1043        $this->assertContains( "AND user_login NOT IN ( '$user_login1','$user_login2','$user_login3' )", $q->query_where);
     1044        $this->assertEquals( $expectedCount, $foundCount );
     1045    }
     1046
     1047    /**
     1048     * @ticket 36624
     1049     */
     1050    public function test_orderby_login__in() {
     1051        $user_login1 = get_userdata( self::$author_ids[0] )->user_login;
     1052        $user_login2 = get_userdata( self::$author_ids[1] )->user_login;
     1053        $user_login3 = get_userdata( self::$author_ids[2] )->user_login;
     1054
     1055        $q = new WP_User_Query( array (
     1056            'login__in' => array( $user_login2, $user_login3, $user_login1 ),
     1057            'orderby' => 'login__in'
     1058        ) );
     1059
     1060        $found = wp_list_pluck( $q->get_results(), 'ID' );
     1061        $expected = array( self::$author_ids[1], self::$author_ids[2], self::$author_ids[0] );
     1062
     1063        $this->assertContains( "FIELD( user_login, '$user_login2','$user_login3','$user_login1' )", $q->query_orderby);
     1064        $this->assertSame( $expected, $found );
     1065    }
     1066
     1067    /**
    8811068     * @ticket 25145
    8821069     */
Note: See TracChangeset for help on using the changeset viewer.